这是我目前的代码.我想将一个字符串拆分为两个整数并将它们存储到变量中.
val line = "1 2"
var a = 0
var b = 0
val c = line.split(" ") match { case Array(x,y) => (x.toInt, y.toInt) }
a = c._1
b = c._2
Run Code Online (Sandbox Code Playgroud)
有没有办法在Scala中做这样的事情?这更加紧凑.
(a,b) = line.split(" ") match { case Array(x,y) => (x.toInt, y.toInt) }
Run Code Online (Sandbox Code Playgroud)
表达式line.split("")匹配{case Array(x,y)=>(x.toInt,y.toInt)}返回一个整数的tupple所以我认为直接将两个整数与变量a和b联系起来工作.
这更紧凑,更干净
val Array(a,b) = line.split("\\s+").map(_.toInt)
Run Code Online (Sandbox Code Playgroud)
即使字符串中有更多数字,以下代码也能正常工作
val Array(a, b, _*) = line split "\\s+" map(_ toInt)
Run Code Online (Sandbox Code Playgroud)
点可选
val Array(a,b) = line split("\\s+") map(_.toInt)
Run Code Online (Sandbox Code Playgroud)
那这个呢 ?
val Array(a,b) = line split "\\s+" map(_ toInt)
Run Code Online (Sandbox Code Playgroud)
对于更具体的情况,这样做
val Array(a, ' ', b) = "1 2".toCharArray
Run Code Online (Sandbox Code Playgroud)
Scala REPL
scala> val line = "1 2"
line: String = "1 2"
scala> val Array(a,b) = line.split("\\s+").map(_.toInt)
a: Int = 1
b: Int = 2
scala> val line = "1 2 3 4"
line: String = "1 2 3 4"
scala> val Array(a, b, _*) = line split "\\s+" map(_ toInt)
a: Int = 1
b: Int = 2
scala> val Array(a, ' ', b) = "1 2".toCharArray
a: Char = '1'
b: Char = '2'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2656 次 |
| 最近记录: |