任何人都可以解释这意味着什么

时间:2017-11-09 04:57:52

标签: scala

scala> val sample ="1,2013-07-25 00:00:00.0,11599,CLOSED"
sample: String = 1,2013-07-25 00:00:00.0,11599,CLOSED

scala> sample.split(",")(1).split(" ")
res15: Array[String] = Array(2013-07-25, 00:00:00.0)

scala> sample.split(",")(1).split(" ")(0).split("-").mkString("").toInt
res16: Int = 20130725

scala> sample.split(",")(1)split(" ")
res17: Array[String] = Array(2013-07-25, 00:00:00.0)

scala> sample.split(",")(1)split(" ")(0).split("-").mkString("").toInt
<console>:28: error: value split is not a member of Char
              sample.split(",")(1)split(" ")(0).split("-").mkString("").toInt
                                            ^

这里错过的点工作仅适用于一个案例...... 我做了一个错字,我注意到了,但我很想知道是否有解释。

3 个答案:

答案 0 :(得分:2)

发生的事情是,如果没有点,方法将应用于错误的元素。

sample.split(",")(1)split(" ")
     // missing dot ^  becomes the same as
sample.split(",")(1) split " "

通过apply()将以下所有内容应用于传递给String的{​​{1}}参数。

split()

答案 1 :(得分:1)

当你在sample.split(",")(1)split(" ")(0)中省略点时,这实际上等于sample.split(",")(1) split (" ")(0),因为当你省略点时,你也可以省略括号

并且对于(" ")(0),其中有隐式转化,将String转换为StringOpsimplicit def augmentString(x: String): StringOps,它可以是< strong>字符集:IndexedSeqOptimized[Char, Repr],因此(" ")(0)将从此字符串集合返回" "第一个字符

所以sample.split(",")(1) split (" ")(0)也等于sample.split(",")(1) split " ",因为上面的隐式转化。因此,sample.split(",")(1) split " "类型仍为Array[String]而非String类型。当然,split无法在Array类型中使用。

答案 2 :(得分:-1)

您忘记了(1)

之后的一段时间

sample.split(",")(1).split(" ")(0).split("-").mkString("").toInt