2014-06-04 58 views
0

與相同的語義內涵給定兩個尚未不同的聲明,說明它考慮斯卡拉內涵性能相比

for (i <- 1 to n) yield { if (i % 2 == 0) 0 else 1 } 

for { i <- 1 to n 
     m = if (i % 2 == 0) 0 else 1 
    } yield m 

該聲明證明更有效的,否則無論有沒有儘管if-else表達式聲明有顯着的性能差異?

回答

2

他們是同樣的事情都翻譯爲:

(1 to n).map{i => if (i % 2 == 0) 0 else 1} 

一個換理解爲地圖

+0

豈不第二翻譯的東西只是語法糖例如:'(1 to n).map {n => {val m = if(i%2 == 0)0 else 1;米}}'? – Kigyo

+0

@Kigyo好點。但我想象編譯器會爲你內聯。我可能會玩耍,明天看看編譯器的輸出 –