我是 Scala 的新手,實際上正在學習它。我正在嘗試組合多個串列并通過將串列傳遞給函式來列印表格。但是,當我嘗試按索引參考值時,我得到了錯誤
可序列化不帶引數
println("%3s%3s%3s\n".formatted(elm(0),elm(1),elm(2))) val list1 = List("1","2","3") val list2 = 串列("1","1","5")
var newLst = List[Serializable]()
newLst : = list1
newLst : = list2
def display_table(a:List[Serializable]){
println("%3s%3s%3s\n".formatted("A","B","C"))
for (elm <- a){
println("%3s%3s%3s\n".formatted(elm(0),elm(1),elm(2)))
}
}
display_table(newLst)
組合串列串列并能夠遍歷它們并通過索引參考它們的正確方法是什么?
uj5u.com熱心網友回復:
具體的答案是你沒有 a List
of List
s,你有 a List
of Serializable
s 并且你不能索引到 aSerializable
中。
但是您不需要索引List
來獲取前導元素,只需使用match
:
val list1 = List("1", "2", "3")
val list2 = List("1", "1", "5")
val newLst = List(list1, list2)
def display_table(a: List[List[String]]) = {
println(" A B C")
for (elm <- a) {
elm match {
case a :: b :: c :: _ =>
println(f"$a%3s$b%3s$c%3s")
case _ =>
println("Not enough elements")
}
}
}
display_table(newLst)
或者foreach
直接使用而不是for
:
def display_table(a: List[List[String]]) = {
println(" A B C")
a.foreach{
case a :: b :: c :: _ =>
println(f"$a%3s$b%3s$c%3s")
case _ =>
println("Not enough elements")
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524175.html
標籤:斯卡拉
上一篇:在這個Scala示例中,泛型型別約束“:<:”和“: :”是什么意思?
下一篇:在Scala中將源轉換為流