微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

scala – 当一个arg预期时,零arg模式匹配

鉴于 Scala中的这个定义:

class Foo(val n: Int)

object Foo {
  def unapply(foo: Foo): Option[Int] = Some(foo.n)
}

这个表达式编译并返回ok:

new Foo(1) match {
  case Foo() => "ok"
}

>为什么这甚至编译?我希望带有Option [T]的提取器意味着仅使用一个参数匹配模式.
>模式Foo()在这里意味着什么?它等同于Foo(_)吗?

换句话说,什么是支持经验行为的语言规则.

解决方法

今天(2.11里程碑)你得到错误

<console>:15: error: wrong number of patterns for object Foo offering Int: expected 1,found 0
                case Foo() => "ok"
                     ^

我在添加Regex.unapply(c:Char)时遇到了这个问题.在某些时候,你指出的案件被接受,然后被拒绝.我记得我喜欢这个想法,如果我的提取器返回Some(thing),那么布尔匹配情况r()将与情况r(_)相同.

什么有效在scappdoc unapply(Char):

http://www.scala-lang.org/files/archive/nightly/docs-master/library/#scala.util.matching.Regex

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐