ScalaタイプNothingは、(私が理解しているように)タイプ階層の最下部を表し、記号⊥でも示されます。つまりNothing、任意のタイプのサブタイプです。型の要件は、Nothing型理論の理論的背景がない私たちのために、James Iryによってよく説明されています!
だから私の質問は、Nothingがすべてのタイプのサブタイプである場合、なぜどのタイプのメソッドも呼び出せないのNothingですか?明らかに、私は何もインスタンス化できませんが、なぜ次のコンパイルが行われないのですか?
var n: Nothing = _
def main(args: Array[String]) {
println(n.length) //compile error: value length is not a member of Nothing
}
確かにNothing、これのサブタイプはString大丈夫ですか?以下は問題なくコンパイルされることに注意してください!
var n: Nothing = _
def foo(s: String) : Int = s.length
def main(args: Array[String]) {
println(foo(n))
}
のように:
def main(args: Array[String]) {
println(n.asInstanceOf[String].length)
}