私は以下の列挙型を持っています。Scala:動的契約を引数として持つ関数
object Smth extends Enumeration {
class Value(name: String, func: (String, Int) => Boolean) extends super.Val(name)
private def opA(index: Int) : Boolean ={
index > 0
}
private def opB(x: String, index: Int) : Boolean ={
index > 0 && x.length > 0
}
val x = new Value("X", opA) // type mismatch error for opA
val y = new Value("Y", opB)
}
列挙コンストラクタはタイプ(String, Int) => Boolean
の、引数として関数を取ります。私は、関数定義では、引数のデフォルト値を使用しないようにしようとしています
(String, Int) => Boolean
(Int) => Boolean
:それは例えば、2つの異なる契約に機能を受け入れるように列挙型のコンストラクタを作成することが可能です。
これは使い方です。
if(Smth.x.func(0)) { do smth }
else if(Smth.y.func("str", 0)) { do smthElse }
ちょうど別のコンストラクタを追加します。 – talex
適用メソッドを追加すると、class.value(name:String、func:(Int)=> Boolean) (String、Int)=> Boolean' – tmp123
私は答えとして提案を投稿します。 – talex