2013-05-15 69 views
1

我看到,它能夠使用以下語法爲方法,該方法需要重複的類型的參數:階函數

def capitalizeAll(args: String*) = { 
    args.map { args => args.capitalize } 
} 

但是我想知道如何的函數可以被用來代替「ARGS = > args.capitalize」

例如(不工作):

def func(s: String): String = { s.capitalize } 
def capitalizeAll2(args: String*) = { 
    args.map { func(args) } 
} 

我怎樣才能使這項工作? 乾杯

回答

3

有沒有神奇:

def func(s: String): String = { s.capitalize } 
def capitalizeAll2(args: String*) = { 
    args.map { arg => func(arg) } 
} 

下面筆者就給arg名字當前處理的字符串(出所有args字符串)。你的第一個例子只是因爲陰影(所有的字符串都是args和當前字符串被賦予相同的名字,這只是陰影原來的)。

幾乎沒有魔法......

def capitalizeAll3(args: String*) = { 
    args.map(func) 
} 

最新的例子使用的語法糖與只有一個參數成參數應用功能。

+0

你應該也可以提及'args.map(_。capitalize)' - 也許這是他真正想要的(只是一個瘋狂的猜測)。 – scriptin