加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:38:38 所属栏目:安全 来源:网络整理
导读:鉴于 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]的提取器意味着仅使用一个参数
鉴于 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读