質問

私は最近、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
}

まあ、何でもユニットに変換できます(これが目的です)。ユニットは(サブ)タイプの格子のユニットと考えることができます。つまり、それはすべてのスーパータイプであることを意味します。見る ウィキペディアの記事.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top