0

私はビジターパターンを作成し、オーバーライドされたサブクラスと一致しています。オブジェクトの設定値に変数を追加して、変更したオブジェクトを返したい。どうすれば構文的にそれを行うことができますか?

trait PropositionOrderer extends Visitor[Proposition]{
  var OurSet = SortedSet[Name] _
    override def variable = {
      _ match {
        case name => Variable(name)//SortedSet+(name).andThen(Variable(_))
      }
    }
}

に追加してSortedSet待機するvoid関数のようにチェーンする構文はありますか?andThen2つのことをしたいので使用できません。それをに追加してからSet変数を返したいのです。何か案は?

4

1 に答える 1

2

私はあなたがこのような何かを意味すると思います:

var ourSet = Set[String]()
def func(s: String) = 
  s match {
    case name =>        // a `case` can be followed by multiple statements 
      ourSet += name    // first we add `name` to the set
      name              // the last expression gets passed up to the assignment of x
  }
val x = func("test")
// ourSet is now Set("test")
// x is now "test"

match式は、一致するの最後の式に評価されますcase。ここで、case一致するのはcase nameです。case nameブロックの下の最後の式はnameであるため、一致全体が評価されます。したがって、関数は、x "test"` を呼び出すときにをfunc返します。name"test"func("test"). Thus,is assigned to be

caseさらに、必要なブロック内で他の操作を実行できます。ここでは、を変更してourSetいます。

于 2012-04-27T03:45:08.050 に答える