说我有这样的解析器:
trait PT {}
trait StatementPT extends PT{}
...
class LoopConditionPT(val operation: String, val variable: IdentPT, val condition: Option[(String,ExpressionPT)]) extends StatementPT { ... }
我Option[(String,ExpressionPT)])
错误一天,我的意思是我可以处理Option[T]
,但是Option[(T,T)]
?我写了这个def loopCondition
,但它总是引发错误:
def loopCondition: Parser[LoopConditionPT] = "some string" ~ var ~ opt(("TIL"|"WILE") ~ expression) ^^ {
case a ~ b ~ Some(c ~ d) => new LoopCondition(a, b, Option[(c, d)])
case a ~ b ~ None => new LoopCondition(a, b, Option[("None", -1)])
有人可以帮我修复loopCondition
吗?感谢。
答案 0 :(得分:0)
Option
用于表示类型。如果要创建Option.apply()
- 即调用new LoopCondition(a, b, Option[(c, d)])
- 请使用括号而不是方括号。而不是
new LoopCondition(a, b, Option((c, d)))
说
new LoopCondition(a, b, Option(c -> d))
或者你可以使用语法糖来表示元组并说
git checkout master
git reset --hard HEAD~
git merge Xcode7