我有以下规则(为清楚起见,还有许多其他规则):
def bindRg: Parser[Cmd] = "bind-roaming-group" ~> name ~ bindRgBody(????) <~
exit ^^ { case name~body => new BindRoamingGroupCmd(name, body)}
def bindRgBody(name: String) = // ...
def name: Parser[String] = """\S+""".r
我想传递&#34; name&#34;的字符串值到bindRgBody(????)但不知道该放入什么&#39; ????&#39;
答案 0 :(得分:3)
您可以在解析器flatMap
上使用"bind-roaming-group" ~> name
:
def bindRg: Parser[Cmd] = ("bind-roaming-group" ~> name) flatMap (n => bindRgBody(n) <~ exit ^^ (b => new BindRoamingGroupCmd(n, b)))
或
def bindRg: Parser[Cmd] = ("bind-roaming-group" ~> name) >> (n => bindRgBody(n) <~ exit ^^ (new BindRoamingGroupCmd(n, _)))
如果你想稍微缩短它。