2013-07-03 156 views
0

我被区别匿名函数pecularities

Array(true,false).filter(x=>x).map(println(_)) 

(runs fine) 

Array(true,false).filter(_).map(println(_)) 

(throws error) 

通知过滤器参数之间的不解:x=>x_。我的表示x=>x_是同义词。如何解释这一点?

+1

看到我的回答[这里](http://stackoverflow.com/a/10365499/334519)讨论(和参考)有关您遇到的问题。 –

+1

出于好奇,你为什么要运行'.map(println(_))'?不要认为将某些东西映射到一系列副作用是一个好主意。 – KChaloux

+0

@KChaloux我用副作用在repl中显示什么被过滤。 –

回答

1

filter(_)被拆成x => filter(x)。看看你的地图用法:map(println(_)),这是desugared到map(x => println(x)),但不是到map(println(x => x)),这是不对的,不会工作