p*****2 发帖数: 21240 | 1 才发现scala不支持这个,比较别扭,大牛说说是不是我理解错误呢?
这样就没有haskell的do notation好用了 |
l******t 发帖数: 55733 | |
p*****2 发帖数: 21240 | 3 同意大牛 貌似let是个标准
【在 l******t 的大作中提到】 : 没有。Val 应该取消,改let where
|
H****S 发帖数: 1359 | 4 for {
a <- List(1,2,3)
b = 1
} yield (a+b)
这样? |
x***4 发帖数: 1815 | 5 我也这样想。
【在 H****S 的大作中提到】 : for { : a <- List(1,2,3) : b = 1 : } yield (a+b) : 这样?
|
p*****2 发帖数: 21240 | 6
不行。你换一个位置试试?
【在 H****S 的大作中提到】 : for { : a <- List(1,2,3) : b = 1 : } yield (a+b) : 这样?
|
x***4 发帖数: 1815 | 7 少了semicolon。改成:
for (
x<-List(1,2,3);
b=3)
yield x+b
【在 p*****2 的大作中提到】 : : 不行。你换一个位置试试?
|
p*****2 发帖数: 21240 | 8 你换换位置?
【在 x***4 的大作中提到】 : 少了semicolon。改成: : for ( : x<-List(1,2,3); : b=3) : yield x+b :
|
x***4 发帖数: 1815 | 9 For里面第一个是monad。所以不能换位置。
【在 p*****2 的大作中提到】 : 你换换位置?
|
p*****2 发帖数: 21240 | 10
试试haskell?
【在 x***4 的大作中提到】 : For里面第一个是monad。所以不能换位置。
|
l******t 发帖数: 55733 | 11 let就是lamda的甜心 所以怎么用都行
【在 p*****2 的大作中提到】 : : 试试haskell?
|
x***4 发帖数: 1815 | 12 Haskell我没有用过,所以不清楚。至于scala的for,基本上是实现下面两步的语法糖:
for(x<-xs; b) yield y 会被改写成 xs flatmap {x=> for (b) yield y}
for(x<-xs) yield y 会被改写成 xs map { x=> y}
所以x=3之类的expression不可以是for的第一个expression。另一方面,如果你需要x=
3这样的expression成为for的第一个expression,那么这个exp应该不depend onfor里
面的其他exp,所以可以加一个Val x=在for前面。
个人理解。不对请指正。
【在 p*****2 的大作中提到】 : : 试试haskell?
|