【问题标题】:What is the syntax behind this statement?该语句背后的语法是什么?
【发布时间】:2015-02-14 05:20:31
【问题描述】:

我发现了这个说法:

var o = None: Option[String]

您可以使用它来将 o 设置为 None,以便稍后将其设置为 Some[String]

但是这个实际的语句在语法上是如何分解的呢? None 是一个扩展 Option[Nothing] 的对象——但是语句的其余部分是如何工作的?例如,冒号有什么作用?

非常感谢!

【问题讨论】:

    标签: scala


    【解决方案1】:

    在 Scala 中,您可以跟随任何带有类型归属的表达式。就像1: Int 是完全有效的。原来如此:

    var o = (None: Option[String])
    

    目的是告诉编译器None 应该输入为Option[String],这样o 就不会输入为None.type。基本上,在这个例子中,它是一样的:

    var o: Option[String] = None
    

    更多:https://stackoverflow.com/a/2087356/247985

    【讨论】:

    • 啊太棒了-谢谢!刚开始并试图掌握所有的冒号和东西。这真的很有帮助!再次感谢..
    • 由于偏函数,我成为了 ascriptive 类型的粉丝,其中类型真的很冗长。 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最好在调用方法时“内联”方法比方法体长。
    猜你喜欢
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多