代码之家  ›  专栏  ›  技术社区  ›  Basilevs

如何编写(字符串):Int函数?

  •  9
  • Basilevs  · 技术社区  · 14 年前

    我想把一个 Array[String] 给一个 Array[Int] (String) => Int 作为映射参数传递?

    我宁愿把现有的 Integer.valueOf 一种缩短结构的参数绑定方法 def parseInt(s:String) = Integer.parseInt(s, 10) 那也太好了。

    4 回复  |  直到 14 年前
        1
  •  17
  •   Vasil Remeniuk    14 年前
    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)
    
        2
  •  3
  •   nadavwr    14 年前

    首先,让我们定义一个字符串数组:

    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)
    
        3
  •  2
  •   Daniel C. Sobral    14 年前

    简单到:

    Array("1", "2", "3") map Integer.valueOf
    
        4
  •  0
  •   huynhjl bhericher    14 年前
    scala> val strs = Array("1", "2")
    strs: Array[java.lang.String] = Array(1, 2)
    
    scala> strs.map(_.toInt)
    res0: Array[Int] = Array(1, 2)
    
    推荐文章