我正在使用Scala2.9.2。我想将一个未命名的函数赋值给一个变量,但我似乎无法正确地理解语法。如果我定义了一个命名函数,然后将命名函数赋值给变量,它似乎工作正常,如下面的会话所示。{case "a" => 123 case _ => s.length ()}foo: String此时,我认为我可以定义一个未命名的函数,并将其
知道为什么我可以使用一个元组赋值多个变量,但不能赋值多个常量吗?scala> val (myVar1, myVar2) = (1, 2)myVar2: Int = 2
<console>:7: error: not found: value MyConst1
val (MyConst1, MyConst2) = (1,
我看到了以下scala代码: case _: Int => data: Any => println(data) // no issue在match case子句中,我不必将data: Any => println(data)写成(data: Any) => println(data)
但在valy = data: Any => println
在Scala2.12.0中,当将函数文字赋值为值时,输出类似于$$Lambda,而在2.11.8中,输出将是<functionX>。为何会有这样的改变呢?$$Lambda是这里的lambda表达式吗?2.12.0:doubler: Int => Int = $$Lambda$1276/486758400@52f8f3982.11.8:
通常,在Scala中,返回关键字在返回值时不需要,最后一个值总是返回值。但是,为什么当将和分配给另一个val时,它将不被视为一个返回值?例如: val sum = a + b将显示类型不匹配错误(预期的Int,got Unit)。这种行为背后的原因/逻辑是什么?
编辑:正如我从注释和答案中了解到的那样,Scala不是返回值,而是返回值。但是,val