SCALA:なぜINTをユニットに変換できるのですか?
質問
私は最近、Scala(2.8)で遊んでいましたが、次のコードを書くことができることに気付きました(Scala Interpreterで):
scala> var x : Unit = 10
x : Unit = ()
そこで何が起こっているのかは明らかではありません。私は本当に暗黙の変換を見ることを期待していませんでした 単位.
解決
セクションを参照してください 「6.26.1値変換」 の中に SCALA言語仕様 バージョン2.8:
...
価値廃棄。 もしも e
いくつかの値タイプがあり、予想されるタイプはユニットです、 e
用語に埋め込むことにより、予想されるタイプに変換されます { e; () }
.
...
他のヒント
何でもユニットに変換できます。これは、それにもかかわらず、値を返す方法をサポートするために主に必要ですが、戻り値がしばしば無視される場合。例えば
import java.util.{List =>JList}
def remove2[A](foo: JList[A], a1:A, a2:A):Unit = {
foo.remove(a1)
foo.remove(a2) //if you couldn't convert the (usually pointless) return value of remove to Unit, this wouldn't type
}
まあ、何でもユニットに変換できます(これが目的です)。ユニットは(サブ)タイプの格子のユニットと考えることができます。つまり、それはすべてのスーパータイプであることを意味します。見る ウィキペディアの記事.
所属していません StackOverflow