Enr*_*tyo 6 arrays functional-programming scala copy list
我在scala中有一个名为l:List [AType]的列表,我想将其更改为list [String].
这可能听起来像一个非常肮脏,低效的方法,但我不太确定这样做的最好方法.我的代码是:
var result = new Array[String]("a","b")
l foreach { case a => result = result :+ (a.toString().toUpperCase()); }
result toList
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是我的错误所在,因为它没有给我任何东西,即使我在循环中放置一个print语句也不打印任何东西.
所以我决定将其更改为更为迫切的方式:
for(i <- 0 to l.length) {
result.update(i, l(i).toString)
}
Run Code Online (Sandbox Code Playgroud)
这次我看到在循环中打印时我想看到的东西,但最后程序因IndexOutOfBound错误而崩溃.
有没有更有效和更好的方法来做到这一点?
谢谢!
slu*_*nen 13
看看地图功能.例如,
scala> List("Some", "Strings").map(_.toUpperCase)
res2: List[java.lang.String] = List(SOME, STRINGS)
Run Code Online (Sandbox Code Playgroud)
要么
scala> List("Some", "Strings").map(_.length)
res0: List[Int] = List(4, 7)
Run Code Online (Sandbox Code Playgroud)
只是对for循环的评论.以下是执行该循环的两种正确方法:
// Using "until" instead of "to": a until b == a to (b - 1)
for(i <- 0 until l.length) {
result.update(i, l(i).toString)
}
// Using "indices" to get the range for you
for(i <- l.indices) {
result.update(i, l(i).toString)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2777 次 |
| 最近记录: |