Nima uchun quyidagi ikkita vazifa bir xil chiqimlarni keltirib chiqarmaydi?

Men shunga o'xshash mahsulotni ishlab chiqarishni kutmoqdaman, lekin buning o'rniga men quyidagilarni qabul qilaman

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 javoblar

Chunki appendcsv (fileName, args) ni amalga oshirganda, siz kutganidek, bir necha argumentlar o'rniga WrapedArraydan foydalanasiz. Shuning uchun appendcsv faktlar faqat ikkita satrni emas, balki faqat bitta dalilni WrappedArraydan olgan.

Arrayni bir nechta argumentlarga sarflash uchun appendcsv (fileName, args: _ *) dan foydalanishingiz mumkin va siz kutgan narsalaringiz bo'ladi.

14
qo'shib qo'ydi
Bundan ham yaxshiroq: Har qanday * o'rniga args: String * dan foydalaning.
qo'shib qo'ydi muallif Debilski, manba