Почему следующие две функции не выдают одинаковый вывод? - PullRequest
3 голосов
/ 28 октября 2011

Я ожидаю, что будет получен идентичный результат, но вместо этого я получу следующее

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")

1 Ответ

14 голосов
/ 28 октября 2011

Потому что, когда вы делаете appendcsv(fileName, args), вы передаете WrapedArray вместо нескольких аргументов, как вы ожидаете. Таким образом, в действительности appendcsv получил только один аргумент WrappedArray, а не две строки.

Вы можете использовать appendcsv(fileName, args: _*), чтобы использовать массив для нескольких аргументов, и это будет то, что вы ожидали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...