【发布时间】:2015-02-14 05:20:31
【问题描述】:
我发现了这个说法:
var o = None: Option[String]
您可以使用它来将 o 设置为 None,以便稍后将其设置为 Some[String]
但是这个实际的语句在语法上是如何分解的呢? None 是一个扩展 Option[Nothing] 的对象——但是语句的其余部分是如何工作的?例如,冒号有什么作用?
非常感谢!
【问题讨论】:
标签: scala
我发现了这个说法:
var o = None: Option[String]
您可以使用它来将 o 设置为 None,以便稍后将其设置为 Some[String]
但是这个实际的语句在语法上是如何分解的呢? None 是一个扩展 Option[Nothing] 的对象——但是语句的其余部分是如何工作的?例如,冒号有什么作用?
非常感谢!
【问题讨论】:
标签: scala
在 Scala 中,您可以跟随任何带有类型归属的表达式。就像1: Int 是完全有效的。原来如此:
var o = (None: Option[String])
目的是告诉编译器None 应该输入为Option[String],这样o 就不会输入为None.type。基本上,在这个例子中,它是一样的:
var o: Option[String] = None
【讨论】:
val x = { case something => } : PF[etc,etc,]。使用函数文字,您需要括号:val x = (a => b) : Function1[etc,etc].
var o = Option.empty[String]
def empty[A] : Option[A] = None,所以是一样的,但是读者必须点击或者记住那个方法的作用。 IMO最好在调用方法时“内联”方法比方法体长。