我想使用map方法将Array[String]
转换为Array[Int]
。将(String) => Int
类型的函数作为map参数传递的最短方法是什么?
我更喜欢以某种方式转换现有的内置类似Integer.valueOf
。
<{1}}之类的参数绑定方法缩短了结构也很棒。
答案 0 :(得分:17)
scala> Array("1", "2", "3") map(_.toInt)
res4: Array[Int] = Array(1, 2, 3)
或
scala> def parseInt(s:String) = Integer.parseInt(s, 10)
parseInt: (s: String)Int
scala> Array("1", "2", "3") map parseInt
res7: Array[Int] = Array(1, 2, 3)
答案 1 :(得分:3)
首先,让我们定义一个字符串数组:
scala> val foo = Array("1", "2", "3")
foo: Array[java.lang.String] = Array(1, 2, 3)
最明显的方法是使用Scala的toInt()
,可用于字符串:
定义:
// StringLike.scala
def toInt: Int = java.lang.Integer.parseInt(toString)
(注意:toString
,在其他地方定义,只是将StringLike
对象转换为Java字符串)
您的代码:
scala> foo.map(_.toInt)
res0: Array[Int] = Array(1, 2, 3)
Integer.valueOf()
也有效,但请注意,您将获得Array[Integer]
而不是Array[Int]
:
scala> foo.map(Integer.valueOf)
res1: Array[java.lang.Integer] = Array(1, 2, 3)
虽然我们正处于理解状态,但理解能力几乎同样有效,除非您自己调用toInt
,而不是将其传递给map()
scala> for (i<-foo) yield i.toInt
res2: Array[Int] = Array(1, 2, 3)
答案 2 :(得分:2)
这很简单:
Array("1", "2", "3") map Integer.valueOf
答案 3 :(得分:0)
scala> val strs = Array("1", "2")
strs: Array[java.lang.String] = Array(1, 2)
scala> strs.map(_.toInt)
res0: Array[Int] = Array(1, 2)