5 ms·
Groovy and Kotlin use the implicit "it" parameter for lambdas that take just one parameter, which is very convenient: listOf(1, 2, 3, 4).filter { it % 2 ==
by kmiroslav 10y ago
Groovy and Kotlin use the implicit "it" parameter for lambdas that take just one parameter, which is very convenient:
listOf(1, 2, 3, 4).filter { it % 2 == 0 }
- smilekzs 10y agoso does LiveScript
- eru 10y agoAnd Haskell uses operator sections: (==0) would be similar to { it == 0 }. Alas, the section syntax get a bit cumbersome when you want to compose two or more of them, like in this translation of your example: filter ((0==) . (%2)) [1, 2, 3, 4]
- SatvikBeri 10y agoScala allows underscores, and sequential underscores refer to the next element, so you can do e.g. list(1, 2, 3, 4).reduce(_ + _) == 10
- kmiroslav 10y agoDoesn't that make the parameter anonymous, though? Can you println that _ and see the value of the current element?
- SatvikBeri 10y agoYeah, that's the tradeoff–gain the ability to work with multiple parameters but lose the ability to reuse a single one.
- vorg 10y agoUse a function that prints then returns its parameter: list(1, 2, 3, 4).reduce{print(_) + _} == 10 Use it if you or your language hasn't defined such a function: list(1, 2, 3, 4).reduce{it:= _; println(it); it + _} == 10 In fact, any name for it will do.