2015-08-08 114 views
0

我有下面的代碼塊 -佔位符如何在Scala中工作?

object TextTransformer { 
    def transform (strings: String*)= { 
     println(strings.map(x => x.toLowerCase())) 
     println(strings.map(_.toUpperCase())) 
    } 
} 

在小寫版本中,我們使用匿名函數,並傳遞一個參數x給它,這是有道理的。

toUpperCase函數背後的魔法是什麼?如果一個變量已被定義爲_會怎麼樣?如何map能夠使用返回值_.toUpperCase()而不是使用_.toUpperCase作爲迭代器?

回答

1

沒有魔法。這兩條線是一樣的。使用佔位符是在函數的主體中只使用一次函數參數的情況下的語法糖。

+0

但是爲什麼我沒有像'_.toUpperCase'而不是'_.toUpperCase()那樣傳遞它呢? – Tushar

+0

@Tushar你可以使用兩種變體,在這種情況下它們沒有區別。 –

+0

這難道不是令人困惑嗎? – Tushar