Scalaメソッドのパラメータを、特性と構造的サブタイプの両方を実装するように制限する必要があります。これどうやってするの?Scalaのクラスを特色と構造的サブタイプに限定する
trait Foo
// ...
def someMethod[A <: Foo xxx { def close() }](resource: A)(block: A => Unit) {
// ...
}
xxx
の代わりに何を入力しますか?私はextends
とwith
の両方を試しましたが、構文エラーがありました。
構造サブタイプの定義をtype
で行うことはできますか?
私はtenshiの解法を使うつもりです。なぜなら、 'A <:Foo with Bar with CanBeClosed'という複数の特性が許されているからです。答えに感謝します。私は1つの特性しか持たないときにこの構文を使うかもしれません。 – Ralph
'[A <:Foo with Bar {def close()}]'信じているかどうか、これはうまくいく;) – agilesteel