未找到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() } 它在标记的行上失败,报告: >没找到:值我 可能是什么原因造成的? 解决方法
问题是在模式匹配中使用大写字母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页):
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |