2011-10-28 10 views
3

私は同じ出力が生成されることを期待するだろうが、その代わり、私は、次の次の2つの関数が同じ出力を生成しないのはなぜですか?

string1,string2 
WrappedArray(string1, string2) 

を取得します。

def appendcsv(fileName: String, args: Any*) { 
    val fw = new FileWriter(fileName, true) 
    val line = args.mkString(",") 
    fw.write(line + "\r\n") 
    fw.close() 
    } 
    def printcsv(fileName: String, args: Any*) { 
    appendcsv(fileName, args) 
    } 
    appendcsv("test.csv", "string1", "string2") 
    printcsv("test.csv", "string1", "string2") 

答えて

14

あなたがappendcsv(fileName, args)を行うときに、あなたが期待されますよう、あなたの代わりに複数の引数のWrapedArrayを渡しているので。したがって、実際にはappendcsvはWrappedArrayの引数を1つしか受けず、2つの文字列を受け取りませんでした。

appendcsv(fileName, args: _*)を使用すると、配列を複数の引数に費やすことができます。これは、予想通りです。

+2

"Any *"の代わりに 'args:String *'を使用する方が良いでしょう。 – Debilski

関連する問題