Zgaduję, że ze względu na kompatybilność, typ parametrów vararg Any*
jest Array [Any] - proszę poprawić to, jeśli się mylę. Jednak to nie wyjaśnia następujący błąd:Scala: Konstruktor biorąc Seq lub varargs
class Api(api_url: String, params: Seq[(String, String)]) {
def this(api_url: String, params: (String, String)*)
= this(api_url, params.seq)
}
Ten kod nie kompiluje, ale daje ostrzeżenie:
double definition: constructor Api:(api_url: String, params: (String, String)*)Api and constructor Api:(api_url: String, params: Seq[(String, String)])Api at line 13 have same type after erasure: (api_url: java.lang.String, params: Seq)Api
Więc jak mogę określić konstruktor biorąc albo varargs lub sekwencja?
Dziękuję, to było naprawdę pomocne. :) – wen
Chciałbym zaznaczyć, że adnotacja typu ': _ *' jest tym, co naprawdę wywołuje konstruktor przy użyciu argumentu sekwencji zgodnego z konstruktorem varargs. Więcej szczegółów: http://stackoverflow.com/questions/6051302/what-does-colon-underscore-star-do-in-scala –