juan_gandhi: (VP)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2014-03-24 05:18 pm
Entry tags:

scala wtf

scala> val m = Map("a"->1, "b"->2, "c"->2)
m: scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 2, c -> 2)

scala> val m1=m map {case (x,y) => (y,x)}
m1: scala.collection.immutable.Map[Int,String] = Map(1 -> a, 2 -> c)

[identity profile] smalgin.livejournal.com 2014-03-25 01:09 am (UTC)(link)
Последняя пара с ключом 2 переписала предыдущую.
А что ожидалось от map? Что он будет умным задним числом и создаст Multimap?

А что будет, если
scala> val m = MultiMap("a"->1, "b"->2, "c"->2)
scala> val m1=m map {case (x,y) => (y,x)}

?
(нету сейчас Scala под рукой)


[identity profile] ivan-gandhi.livejournal.com 2014-03-25 02:18 am (UTC)(link)
Я MultiMap никогда не использовал; даже не в курсе, есть ли оно в скале.

[identity profile] eliah lakhin (from livejournal.com) 2014-03-25 05:32 pm (UTC)(link)
Есть, но она ущербная довольно. Кажется прямо так и определяется как алиас Map[A, Set[B]]. Причем, кажется, он еще и мутабельный. Иммутабельного аналога нет.
Edited 2014-03-25 17:35 (UTC)

[identity profile] migmit.livejournal.com 2014-03-25 01:18 pm (UTC)(link)
Видимо, wtf состоит в наличии метода map.

[identity profile] eliah lakhin (from livejournal.com) 2014-03-25 05:34 pm (UTC)(link)
Ну, мое личное имхо, что разумнее было бы map применять на TraversableOnce, и не приводить к подтипу, но это же Скала. :)

[identity profile] eliah lakhin (from livejournal.com) 2014-03-25 05:30 pm (UTC)(link)
А в чем подвох? Вроде же все правильно, не?

[identity profile] http://users.livejournal.com/_windwalker_/ 2014-03-25 10:10 pm (UTC)(link)
Кто последний встал, того и тапочки. Правда с хера тогда такая мапа объявляется immutable ?
Но вообще забавно, что в API записано для этого момента по поводу мап...