scala – 通过与Array匹配的模式进行多次赋值不适用于大写的val
发布时间:2020-12-16 19:09:27 所属栏目:安全 来源:网络整理
导读:读完 this answer之后,我试着自己玩这个漂亮的功能,发现我做的时候还可以 scala val Array(a,b,n) = "XXX,YYY,ZZZ".split(",")a: java.lang.String = XXXb: java.lang.String = YYYn: java.lang.String = ZZZ 但是对于大写的命名变量是不行的: scala val Ar
读完
this answer之后,我试着自己玩这个漂亮的功能,发现我做的时候还可以
scala> val Array(a,b,n) = "XXX,YYY,ZZZ".split(",") a: java.lang.String = XXX b: java.lang.String = YYY n: java.lang.String = ZZZ 但是对于大写的命名变量是不行的: scala> val Array(a,N) = "XXX,") <console>:9: error: not found: value N val Array(a,") 这种行为的原因是什么? UPD scala> val (a,N) = (1,2,3) <console>:9: error: not found: value N val (a,3) 解决方法
Scala将其视为与模式匹配的常量.注意:
scala> val N = 20 N: Int = 20 scala> val Array(a,N) = Array(11,23,20) a: Int = 11 b: Int = 23 scala> val Array(a,21) scala.MatchError: [I@195d471 (of class [I) at .<init>(<console>:75) at .<clinit>(<console>) at .<init>(<console>:11) at .<clinit>(<console>) at $print(<console>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:704) at scala.tools.nsc.interpreter.IMain$Request$$anonfun$14.apply(IMain.scala:920) at scala.tools.nsc.interpreter.Line$$anonfun$1.apply$mcV$sp(Line.scala:43) at scala.tools.nsc.io.package$$anon$2.run(package.scala:25) at java.lang.Thread.run(Thread.java:662) 要提取值的变量必须以小写字母开头. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |