如何使用Scala将数组值分别赋值给独立的Int变量
Scala 将split返回数组元素分别赋值给独立变量的实现方式
你原有写法的问题在于:var a,b,c = date.split("/") 会把split返回的整个Array[String]对象同时赋值给a、b、c三个变量,三个变量最终都是数组类型,无法分别拿到拆分后的日、月、年字符串。
推荐实现:利用Scala原生解构语法
Scala 原生支持数组的模式匹配解构,直接按下面写就能达到预期效果:
var date = "12/01/2021" val Array(a, b, c) = date.split("/") print(a, b, c) // 输出结果:(12,01,2021)
- 这个写法依赖Array伴生对象自带的提取器,会自动按数组下标顺序,把对应位置的元素绑定到括号里的a、b、c三个变量上
- 如果你需要a/b/c是可变变量,把定义前的
val换成var即可 - 注意:如果split返回的数组长度不等于3,运行时会抛出
MatchError,如果日期格式可能不合法,建议加安全匹配逻辑:
date.split("/") match { case Array(a, b, c) => print(a, b, c) case _ => print("日期格式不符合预期,需为dd/MM/yyyy格式") }
兼容写法:手动按下标取值
如果不想用解构语法,也可以拆分后手动按下标取对应位置的元素,逻辑更直白:
var date = "12/01/2021" val parts = date.split("/") val a = parts(0) val b = parts(1) val c = parts(2) print(a, b, c)
内容的提问来源于stack exchange,提问作者Rahul P
相关产品推荐
相关产品推荐

