2014-06-04 39 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好点。但我想象编译器会为你内联。我可能会玩耍,明天看看编译器的输出 –