我有一個Seq類似的物件Seq(x1, x2, x3, x4),我想將它轉換為Seq(y1, y2, y3, y4)
這樣做的最有效方法是什么
現在我是
val seq1 = Seq(x1, x2, x3......)
var seq2 = Seq[MyType2]()
for (myObj <- seq1) {
seq2 = seq2 : myObj.tranformToType2
}
問題是scala doc說
https://www.scala-lang.org/api/2.12.x/??scala/collection/Seq.html
由該序列的所有元素后跟 elem 組成的新序列。
所以我想知道將物件串列轉換為另一個物件串列的最慣用/最有效的方法是什么
uj5u.com熱心網友回復:
您撰寫的代碼是 Scala 命令式風格,但 Scala 旨在成為一種函式式語言。
函式式方法是:
val seq2 = seq1.map(myObj => myObj.tranformToType2)
// Or shorter:
val seq2 = seq1.map(_.tranformToType2)
map是函式編程中最有用的操作之一。當您需要將某物轉化為其他物時,您會發現可以在任何地方使用它。
根據經驗,每當您看到 avar和 afor回圈時,這很臭,您應該問自己我如何以功能方式做到這一點?
uj5u.com熱心網友回復:
map是您正在尋找的功能。查看檔案以獲取詳細資訊。
一個簡單的例子:
case class MyType1(x: String)
case class MyType2(x: Int)
val ls: Seq[MyType2] = Seq(MyType1("hello"), MyType1("world")).map(mt1 => MyType2(mt1.content.length))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/362477.html
標籤:斯卡拉
