Scala的元组展开细微差别
发布时间:2020-12-16 09:21:54 所属栏目:安全 来源:网络整理
导读:尝试将元组解开为val时,我已经注意到scala中有以下行为: scala val (A,B,C) = (1,2,3)console:5: error: not found: value A val (A,3) ^console:5: error: not found: value B val (A,3) ^console:5: error: not found: value C val (A,3) ^scala val (u,v
尝试将元组解开为val时,我已经注意到scala中有以下行为:
scala> val (A,B,C) = (1,2,3) <console>:5: error: not found: value A val (A,3) ^ <console>:5: error: not found: value B val (A,3) ^ <console>:5: error: not found: value C val (A,3) ^ scala> val (u,v,w) = (1,3) u: Int = 1 v: Int = 2 w: Int = 3 这是因为scala的模式匹配机制自动地假定从模式中的首都开始的所有标识符是常量,还是由于其他原因? 谢谢! 解决方法
是的,它变得更糟:
val (i,j) : (Int,Int) = "Hello" -> "World" 以上将在运行时使用ClassCastException进行编译和失败.很容易忘记(i,j)声明是一种模式. 编辑:对于ziggystar,Scala分配规则规定在声明中: val p = expr //or var p可以是标识符或模式(参见Scala中编程的第15.7节,第284页).所以例如,以下是有效的: val x :: y :: z :: rest = List(1,3,4) 将这一点与模式被擦除的事实(即参数类型信息未被检查)意味着我的原始示例将被编译. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Scala for-comprehension with tuple decomposition
- 如何抓取基于https协议的webservice数据包(webservice调试
- umount不掉挂载点时的处理方法
- 理解angularjs中的$emit,$broadcast和$on
- 又拍云运维总监邵海杨详解 DevOps “八荣八耻”
- Angular4.x学习之路分享【2】--项目的目录结构说明及相关指
- .net 调用webservice 总结
- scala – sbt命令的更好的语法可能吗?
- 构建基于CXF的WebService服务(4)--CXF与SpringMVC集成
- Bootstrap CSS——Button&Img