1
指定されたクラスを返す:Scalaのオブジェクトは:に渡したり、関数から
def f(x: Obj): Boolean
def g(x: Boolean): Obj
どちらの二つの例の原因:
object Obj {...}
が機能またはこのような関数からオブジェクトを返すためにオブジェクトを渡す方法がありますCE(コンパイルエラー)。
私はそれが実用よりも、主に理論的なので、最初の例で関数fの本体で名前Obj
によって直接可能使用目的だということを知っています。しかし、2番目の例では、私は別の方法を見ることができません。
どうやら両方の例は、「アンチパターン」であり、Scalaのオブジェクトは、このような方法を適用すべきではありません。
はこれについて考えてみて、 'Obj'タイプがありますか? – thefourtheye
'object'はクラスではなく、あなたの場合' Object'(または 'AnyRef')にあるクラスのインスタンスです。 –
ありがとう!もちろん、シングルトンオブジェクトです。しかし、以下の答えで分かるように、このオブジェクトのタイプは 'Obj.type'です。この構文を使用すると、それをパラメータとして渡してfucntionから返すことができます。 –