Maybe it is general knowledge but I’ve just found that Some(1, 2, 3)
is valid and it is an Option[(Int, Int, Int)]
.
Why is it so?
Where is the magic that makes it possible?
Thanks !!!
Juan Manuel
Maybe it is general knowledge but I’ve just found that Some(1, 2, 3)
is valid and it is an Option[(Int, Int, Int)]
.
Why is it so?
Where is the magic that makes it possible?
Thanks !!!
Juan Manuel
Well, I never … you learn something new every day.
I was curious and found this: https://contributors.scala-lang.org/t/lets-drop-auto-tupling/1799/24.
The moral of the story is, don’t get too attached to this…
Is called auto-tupling, it is just more sugar syntax. And is deprecated now because it is confusing for most folks.
Good advice in general.
For this feature specifically, it seems possible one can have a future together and develop a deep relationship in which you’ve forgotten which stuff is yours and which stuff belongs to auto-tupling and multi-arg infix.
The linked threads, tickets, and pull requests demonstrate the relationship history and associated baggage. There is a recent discussion. The unresolved issue is efficient and pleasant
buf += (42, 27) // addAll
map += (42, 27) // addOne(42 -> 27)
You’ll always be able to write Some apply (42, 27)
, or
scala> extension (x: Some.type) infix def of[A](a: A): Some[A] = Some(a)
def of(x: Some.type)[A](a: A): Some[A]
scala> Some of (1,2)
val res2: Some[(Int, Int)] = Some((1,2))
Since the feature has been under discussion for 6-14 years, probably Scala won’t meet its climate change goals by 2030 and the atmosphere will remain heated.
Thanks for all the answers !!