繁体   English   中英

在Scala的解析器组合器中返回“ |”的类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM