[英]Return type of “|” in Scala's parser combinators
我正在阅读Bernie Pope关于“ Scala中的Parser组合器”的幻灯片。 他引用了“另类”的组合子的方法签名类型|
:
def | [U >: T](q: => Parser[U]): Parser[U]
并问:“作业:为什么|却没有这种类型?”
def | [U](q: => Parser[U]): Parser[Either[T,U]]
case class Stooge(name: String)
val moe: Parser[String] = "Moe"
val larry: Parser[String] = "Larry"
val curly: Parser[String] = "Curly"
val shemp: Parser[String] = "Shemp"
val stooge: Parser[Stooge] = (moe | larry | curly | shemp) ^^ { s => Stooge(s) }
现在,想象一下如果使用{ s => Stooge(s) }
则必须编写代替{ s => Stooge(s) }
s: Either[Either[Either[String,String],String],String]
而不是s: String
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.