2013-07-03 152 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)),這是不對的,不會工作