5

我想知道,是否有相当于 python 的 pass 表达式?这个想法是编写没有实现的方法签名并编译它们只是为了对这些签名进行类型检查以进行某些库原型设计。我能够使用这个来模拟这种行为:

def pass[A]:A = {throw new Exception("pass"); (new Object()).asInstanceOf[A]}

现在当我写:

def foo():Int = bar()
def bar() = pass[Int]

它可以工作(它可以进行类型检查,但运行时会爆炸,这很好),但我的实现感觉不对(例如 java.lang.Object() 的使用)。有没有更好的方法来模拟这种行为?

4

1 回答 1

9

在 Scala 2.10 中,Predef 中有该???方法

scala> ???
scala.NotImplementedError: an implementation is missing
  at scala.Predef$.$qmark$qmark$qmark(Predef.scala:252)
  ...

在 2.9 中,您可以像这样定义自己的:

def ???[A]:A = throw new Exception("not implemented")

如果您在没有显式类型参数的情况下使用此版本,A将被推断为Nothing.

于 2012-12-07T13:02:01.153 回答