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

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...