/ /“()、単価”とは何ですか? - スカラ

"()、unit value"とは何ですか? - スカラ

私の拡張性の高い単体テストは次のメッセージで失敗します

<(), the Unit value> was not equal to object ...

「単価」の種類と値は?

回答:

回答№1の11

タイプは Unit そしてこの型が取り得る唯一の値はリテラルです ().


回答№2のための5

http://www.scala-lang.org/api/current/scala/Unit.html

"Unitはscala.AnyValのサブタイプです。 Unit型()の値は1つだけで、基礎となるランタイムシステム内のどのオブジェクトによっても表されません。戻り型Unitのメソッドは、voidと宣言されたJavaメソッドに似ています。」

単位値は、他の戻り値の型を持たない式から返されます。例えば、

> val q = 1 until 10 foreach (_+1) // arbitrary expression of type Unit is assigned to q
q: Unit = ()

あなたがこのような関数を定義するとき:

def foo(x: Int) {
..
}

ScalaはUnitが返されることを期待しています。それはと同等です

def foo(x: Int): Unit = { .. }

要するに: Scalaでは、式は文字通り「何も返さない」という点を除いて、unitはJavaまたはC ++のvoidに似ています。式/関数がUnit型の場合は、実際には何も返さないものを表します。私はあなたがそれが違う値の何かを返すことを期待していた時にあなたがあなたのユニットテストのどこかにあなたがreturn()する何かを持っていると思います。おそらくあなたは書いた

def foo {
..
val result = something
}

の代わりに

def foo: SomethingType = {
..
val result = something
result
}