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

未找到Scala:解包返回元组时的值x

发布时间:2020-12-16 18:56:09 所属栏目:安全 来源:网络整理
导读:我在无数的网站上看到过这种代码但它似乎没有编译: def foo(): (Int,Int) = { (1,2)}def main(args: Array[String]): Unit = { val (I,O) = foo()} 它在标记的行上失败,报告: 没找到:值我 未找到:值O. 可能是什么原因造成的? 解决方法 问题是在模式匹配
我在无数的网站上看到过这种代码但它似乎没有编译:

def foo(): (Int,Int) = {
        (1,2)
}

def main(args: Array[String]): Unit = {
        val (I,O) = foo()
}

它在标记的行上失败,报告:

>没找到:值我
>未找到:值O.

可能是什么原因造成的?

解决方法

问题是在模式匹配中使用大写字母I和O.您应该尝试用小写字母val(i,o)= foo()替换它. Scala Language Specification声明值定义可以扩展为模式匹配.例如,定义val x :: xs = mylist扩展为以下(参见第39页):

val x$= mylist match { case x :: xs => {x,xs} }
val x = x$._1
val xs = x$._2

在您的情况下,值定义val(i,o)= foo()以类似的方式展开.但是,语言规范还指出,模式匹配包含小写字母(参见第114页):

A variable pattern x is a simple identi?er which starts with a lower case letter.

(编辑:李大同)

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

    推荐文章
      热点阅读