"Useless syntax sugar": Numbered block parameters in Ruby (zverok.space)
from PythOnRails@programming.dev to programming@programming.dev on 11 Oct 2023 13:33
https://programming.dev/post/4237623

#programming

threaded - newest

twelvefloatinghands@lemmy.world on 11 Oct 2023 14:16 next collapse

Damn, I wish rust had that

paperplane@lemmy.world on 11 Oct 2023 14:18 next collapse

Swift does, though using the dollar sign rather than underscores

TheCee@programming.dev on 11 Oct 2023 15:17 next collapse

I’m glad it doesnt.

colonial@lemmy.world on 11 Oct 2023 15:45 next collapse

It wouldn’t be as relevant, since passing a function or method instead of a closure is much easier in Rust - you can just name it, while Ruby requires you to use the method method.

So instead of .map(|res| res.unwrap()) you can do .map(Result::unwrap) and it’ll Just Work™.

jendrik@discuss.tchncs.de on 11 Oct 2023 19:17 collapse

Except when Type::Method takes a reference, then it doesn’t just work

Anders429@programming.dev on 11 Oct 2023 19:54 collapse

I sincerely doubt Rust would ever add something like this.

AnUnusualRelic@lemmy.world on 11 Oct 2023 16:11 next collapse

Is ruby the new Perl?

marcos@lemmy.world on 11 Oct 2023 17:27 collapse

That deserves an “always has been” meme… But IMO, Ruby outperled Perl since the beginning.

Perl doesn’t let you redefine the syntax so that you can write the same program multiple ways. All it does is to encourage multiple programs to have the same meaning.

AnUnusualRelic@lemmy.world on 11 Oct 2023 18:22 next collapse

I never looked at Ruby, but that doesn’t seem like it would be great for readability (although maybe productivity).

marcos@lemmy.world on 11 Oct 2023 20:33 collapse

People mostly refrain from using it.

Much like people used to create an idiom in Perl and stick to it.

exussum@lemmy.world on 12 Oct 2023 00:07 collapse

And lets you easily write metal languages due to the way you can pass around blocks. Think configuration as code type stuff.

Knusper@feddit.de on 11 Oct 2023 18:27 next collapse

I do think the unnumbered variant of such anonymous parameters is useful, if you’ve got a team of devs that knows not to misuse them.

In particular, folks who are unexperienced will gladly make massive multi-line transformations, all in one step, and then continue blathering on about it or similar, as if everyone knew what they were talking about and there was no potential for ambiguity.

This is also particularly annoying, because you rarely read code top-to-bottom. Ideally, you should be able to jump into the middle of any code and start reading, without having to figure out what the regional abbreviations or it mean.

bnjmn@programming.dev on 11 Oct 2023 22:12 next collapse

OMG looks like Raku

jeffhykin@lemm.ee on 11 Oct 2023 22:48 next collapse

Is it just me or does it feel kinda unclean for it to just support 1 through 9?

eager_eagle@lemmy.world on 12 Oct 2023 00:00 collapse

tbf positional arguments are already bad enough. Now if you’re using over 9 positional args… just take a break, go for a short walk, and maybe you’ll come back with a better plan

eager_eagle@lemmy.world on 11 Oct 2023 23:51 collapse

The liberty to not name things that are obvious.

and that’s yet another way to end up with hard to read code.

Variables hold values that have meaning. Learn how to name things and you’ll write good code.

exussum@lemmy.world on 12 Oct 2023 00:06 collapse

This makes me want to write a function for you to add to numbers where the variables are leftumber and rightnumber, instead of x and y.

eager_eagle@lemmy.world on 12 Oct 2023 00:15 collapse

if “left” and “right” were relevant for addition, they would indeed be better names

exussum@lemmy.world on 12 Oct 2023 00:18 collapse

Are you against using a single letter variable like e for element in iterating over things?