2016-04-17 136 views
0

我想在scala中創建一個使用「match ... case」來將列表值加倍的函數。爲什麼這個列表爲空

例如:

doubleList(List(2,1,4,5)) 
//> res0: List[Int] = List(4, 2, 8, 10) 

我寫了這個功能:

def doubleList(xs: List[Int]): List[Int] = 
    xs match { 
     case y :: ys => 
     y * 2; doubleList(ys); 
     case Nil => xs; 
    } 

,但我得到一個空列表作爲結果:

//> res0: List[Int] = List() 

誰能TEEL我我是什麼做錯了?

+0

任何原因,爲什麼你不只是使用'map(_ * 2)'? –

+0

是的,我需要特別使用「匹配...案例」。 – undisp

回答

3

;關閉的發言,並有效地扔掉的結果,使用::,而不是創建一個新的Listy * 2結果和doubleList(ys)

def doubleList(xs: List[Int]): List[Int] = 
    xs match { 
    case y :: ys => 
     y * 2 :: doubleList(ys) 
    case Nil => xs 
    } 

附:你不需要在scala的一行末尾加上;

+0

哦,我不知道那個;結束聲明。謝謝你的回答,工作得很好。 – undisp

相關問題