Чому наступні дві функції не дають ідентичного виходу?

Я хотів би очікувати ідентичний висновок для виробництва, але замість цього я отримую наступне

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

1 Відповіді

Тому що, коли ви виконуєте appendcsv (fileName, args) , ви передаєте WrapedArray замість декількох аргументів, як ви очікуєте. Отже, у фактах appendcsv отримано лише один аргумент WrappedArray, а не два рядки.

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

14
додано
Ще краще: використовуйте args: String * замість Any * .
додано Автор Debilski, джерело
ІТ КПІ - Scala
ІТ КПІ - Scala
45 учасників