http://www.codecommit.com/blog/scala/scala-for-java-refugees-part-6の高階関数の例にあるものと同様のコードを実装しようとしています。
val button = new JButton("test")
button.addActionListener{ e:ActionEvent => println("test") }
add(button)
以下につながる
error: type mismatch;
found : (java.awt.event.ActionEvent) => Unit
required: java.awt.event.ActionListener
button.addActionListener{ e:ActionEvent => println("test") }
^
これは、少なくとも私のシステムの Scala コンパイラ バージョン 2.7.6.final には当てはまります。匿名のActionListenerを明示的に実装するJavaスタイルの方法で、私が望むものを達成することができます。
button.addActionListener( new ActionListener() {
def actionPerformed(e:ActionEvent) { println("test") }
})
私の知る限り、Scala はダックタイピングを使用して、この ActionListener の明示的な実装を不要にすることができるはずです。では、なぜここで機能しないのですか?この時点で、ダックタイピングの実際の経験はほとんどありません。