5
私は次のクラス定義を持っている想像:名前による型パラメータ
class Foo[T]
をし、私は次の
def bar(x:Foo[ =>Int ]):Int = ???
をしたい。しかし、コンパイラはここでは許さ「ノー名前によるパラメータの型で失敗します"
genericメソッドの型パラメータとしてby-name型を使用するにはどうすればよいですか?
私は次のクラス定義を持っている想像:名前による型パラメータ
class Foo[T]
をし、私は次の
def bar(x:Foo[ =>Int ]):Int = ???
をしたい。しかし、コンパイラはここでは許さ「ノー名前によるパラメータの型で失敗します"
genericメソッドの型パラメータとしてby-name型を使用するにはどうすればよいですか?
独自のレイジーラッパーを用意する必要があります。このような何か:
class Lazy[T](wrp: => T) {
lazy val value: T = wrp
}
、その後: `:
def bar(x: Foo[Lazy[T]]): Int = ???
何'クラスのLazy [T](=> T valの値)についてはどうですか?バリューホルダーを繰り返す必要はありません。 – pedrofurla
@pedrofurla。許可されていません(valパラメータは名前で呼び出すことはできません)。それがあったのであれば、何時に初期化されることになるでしょうか? –
奇妙な。それを知らなかった。私は彼らが最初の呼び出しでinit-edされると思います。 – pedrofurla