从这里我们开始知道一个表达式:
for( i <- 1 to 10 ) yield i + 1
Run Code Online (Sandbox Code Playgroud)
将扩展到
( 1 to 10 ).map( _+1 )
Run Code Online (Sandbox Code Playgroud)
但是下面的表达式扩展到了什么?
for( i <- 1 to 50 j <- i to 50 ) yield List(1,i,j)
Run Code Online (Sandbox Code Playgroud)
它是否正确?
( 1 to 50 ).map( x => (1 to 50 ).map(List(1,x,_))
Run Code Online (Sandbox Code Playgroud)
我对这个问题感兴趣,因为我想创建一个执行多个Xi <- Xi-1 to 50操作的函数,如下所示:
for( X1 <- 1 to 50 X2 <- X1 to 50 X3 <- X2 to 50 ..... Xn <- Xn-1 to 50 )
yield List(1,X1,X2,X3,.....,Xn)
Run Code Online (Sandbox Code Playgroud)
该函数有一个参数:dimension表示n上面的表达式.
它的返回类型是IndexSeq[List[Int]]
我怎样才能做到这一点?
谢谢你的回答(:
它在相关文档中得到了很好的解释.特别是:
for(x <- c1; y <- c2; z <- c3) yield {...}
Run Code Online (Sandbox Code Playgroud)
将被翻译成
c1.flatMap(x => c2.flatMap(y => c3.map(z => {...})))
Run Code Online (Sandbox Code Playgroud)
我认为没有办法抽象任意嵌套理解(除非你使用巫毒魔法,比如宏)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |