を必要と見つけScalaはユニットは、私は以下のいるUnit.type
Error:(8, 21) type mismatch;
found : Unit
required: Unit.type
(s:String) =>()
なぜクラスからオーバーライドは、第二次有効ではありませんか?どうすればそれを動作させることができますか? (。あなたの方法からFunction1[String, Unit]
を返すことを意味しなかった場合やメソッドへ) -
を必要と見つけScalaはユニットは、私は以下のいるUnit.type
Error:(8, 21) type mismatch;
found : Unit
required: Unit.type
(s:String) =>()
なぜクラスからオーバーライドは、第二次有効ではありませんか?どうすればそれを動作させることができますか? (。あなたの方法からFunction1[String, Unit]
を返すことを意味しなかった場合やメソッドへ) -
問題は(s:String) => Unit
がUnit.type
を返しているということである代わりに(s:String) =>()
に変更し
別の言い方をするには、次の
def doSomething = (s:String) => Unit
は本当にです:
def doSomething: (String) => Unit.type =
// A function that takes a string and returns the companion type of Unit
(s: String) => Unit
ながら何おそらくたかったのでした。多分
def doSomething: (String) => Unit =
// A function that takes a string and returns Unit
(s: String) =>()
または:
def doSomething(s: String): Unit
// An abstract method that takes a string and returns nothing.
(s:String) => Unit
戻っUnit.type
それはタイプではなく、その型の値を返します。すなわち。 (s:String) =>()
を実行したい場合は、型がUnitの値を返します。
これは正確ではありません。 Unit.typeはユニットのコンパニオンオブジェクトのタイプであり、 'Unit.type'の唯一の値はユニットコンパニオン' Unit'です。 – pedrofurla
それは完全に不正確ではありません。 (つまり、正確ではありません)ハッシュタグの会話には必須ではありません。 –
確かに、「ユニット」の仲間は混乱を正当化しません。私は実際にユニットの値の構文 '()'がなぜそれのエイリアスでないのか分かりません。 SIP-23は 'Unit.type'と'().type'がその場合同じものであることを確認しやすくしますか? –
* Justify *、no - 値の位置に '(v:T1)=> r:T2'という型の位置で' T1 => T2'を混乱させる人のために 'String =>()' vs '( s:String)=>()//本当に().type'はもっと混乱します。 (あなたが何を意味するのか誤解していない限り)。 –
申し訳ありませんが、私のコメントはあなたの丁寧な回答ではありません。はい、あなたは私を理解しました。私は 'def f():()= println()'と頬を書くのを待つことができません。 (これはコンパイルされません)今のところUnitオブジェクトを削除するだけで偶発的な複雑さを避けることができます。私はOPのための共感を表明したかったのです。 –