我正在尝试理解Scala中的for推导式,我有很多例子,但是我只能大致理解...
有一件事让我很难弄清楚,就是for( ) vs for{ }的区别。我尝试了两种方式,似乎可以在其中一个中实现某些功能,但在另一个中会出错。
例如,这个示例不起作用:
def encode(number: String): Set[List[String]] =
if (number.isEmpty) Set(List())
else {
for (
split <- 1 to number.length
word <- wordsForNum(number take split)
rest <- encode(number drop split)
) yield word :: rest
}.toSet
然而,如果你将它改为{ },它就可以编译:
def encode(number: String): Set[List[String]] =
if (number.isEmpty) Set(List())
else {
for {
split <- 1 to number.length
word <- wordsForNum(number take split)
rest <- encode(number drop split)
} yield word :: rest
}.toSet
这些示例来自我正在学习的Coursera课程。教授在视频中没有提到“为什么”,我想知道是否有其他人知道。谢谢!