這是一個可行的解決方案
def myMap(f: Int => Int)(list: List[Int]): List[Int] = {
list match {
case Nil => Nil
case head :: tail =>
f(head) :: myMap(f)(tail)
}
}
你的代碼(除了格式化)的問題數。
,不要使用大寫字母瓦爾斯
你var
是沒有意義的,你永遠不會修改它,這種分配是沒用反正,你可以簡單地使用你的論點。
你如果需要的東西,otherways不會magicly返回Nil
你可以用通用型取代int此函數通用
def myMap[A](f: A => A)(list: List[A]): List[A] = {
list match {
case Nil => Nil
case head :: tail =>
f(head) :: myMap(f)(tail)
}
}
爲了讓您若其他解決方案的工作,你可以做到這一點:
def myMap[A](f: A => A)(list: List[A]): List[A] = {
if (list.isEmpty) {
Nil
} else {
val (head :: tail) = list
f(head) :: myMap(f)(tail)
}
}
DEF MYMAP(F:INT =>內部)(L:列表[INT]):列表[INT] = { 變種XX = L 如果(L.isEmpty)無 VAL(頭::尾巴)= xx f(head):: myMap(f)(tail) } – Sagar0921
1 - 沒有理由創建'xx'。只需使用'L'。 (除非你應該避免使用國會大廈字母變量名。)2 - 你的'if'語句沒有'else'子句,所以所有的代碼都會被執行,無論L是否爲空。 – jwvh
3)不要通過提問SO –