11

如果有一个你不想对你做任何事情的函数,只需在 Python 中执行以下操作:

def f():
    pass

pass我的问题是,在 Scala 中是否有类似的东西?

4

4 回答 4

14

pass是 Python 的一个语法怪癖。在某些情况下,语法要求你写一个语句,但有时你不想要一个语句。这就是pass目的:这是一个什么都不做的声明。

Scala 从不要求您编写语句,因此不编写语句的方法就是不编写语句。

于 2013-09-20T09:24:35.717 回答
10

我认为()是相似的。

scala> def f() = ()
f: ()Unit

scala> f              

scala>
于 2013-09-20T05:06:07.777 回答
4

据我了解,pythonpass用于尚未实现的案例。如果你在 scala 中需要这样的东西,那么使用???它类似于(),但它是一个返回 Nothing ( def ??? : Nothing = throw new NotImplementedError) 的函数。您的代码将编译,但如果您调用这样的方法,它会崩溃NotImplementedError

def foo: ResultType = ???
于 2013-09-20T06:03:08.040 回答
2

一般可以Unitpass. 您什么也不做,该行的计算结果为Unit,类似于 Java 的void,但它本身是一个显式类型。

// implicit return value of type Unit
def showMsg(msg:Option[String]) = msg match {
    case None => Unit
    case Some(m) => println(m)
}
于 2014-04-17T18:43:54.833 回答