6
我可以做这样的事情有串的末尾模式匹配:头::字符串
s match {
case "" => ...
case head +: tail => ...
}
其中head
是第一个字符和tail
是剩下的字符串?
在上面的代码中,head
的类型是Any
,我希望它是String
或Char
。
我可以做这样的事情有串的末尾模式匹配:头::字符串
s match {
case "" => ...
case head +: tail => ...
}
其中head
是第一个字符和tail
是剩下的字符串?
在上面的代码中,head
的类型是Any
,我希望它是String
或Char
。
case h +: t
表示case +:(h, t)
。有object +:
与unapply
方法。
对象+:
方法unapply
只被定义为SeqLike
String
和不SeqLike
。
你需要一个定制unapply
方法是这样的:
object s_+: {
def unapply(s: String): Option[(Char, String)] = s.headOption.map{ (_, s.tail) }
}
"abc" match {
case h s_+: t => Some((h, t))
case _ => None
}
// Option[(Char, String)] = Some((a,bc))