関連:How do you assign a function to a value in Scala?インスタンスメソッドをScalaの値にどのように割り当てるのですか?
を考える:
class Foo{
def bar = println("bar")
def bat = println("bat")
}
は、どのように私はそれがFoo.bar
またはFoo.bat
のいずれかを指すようfnRef
を作成するのですか?
def deepFunction(foos : List[Foo], fnRef :()=>Unit) = {
foos.map(_.fnRef) //May call either bar or bat
}
ボーナス:それはFooのクラス内でその署名の唯一の方法だようfnRefを制約することは可能ですか?
'bar'や' bat'を選んだとき、 'Foo'をすべて手に入れれば、これがどのように働くのか分かります。しかし、これは私の 'deepFunction'がList [(Foo、()=> Unit)]を取ることを要求しないでしょうか? –
ポリモーフィックにそれらを選択する場合は、そのタイプを使用し、それらのコンテナを受け入れる必要があります。リストは必ずしも必要ではありませんが、例えば、varargs、Seq、Iterable、Traversable、TraversableOnceなどの他のコレクション特性を持つことができます。 –