Bir Option
var:Scala: Bir Seçeneği varargs'a dönüştürebilir miyim?
val myOption: Option[Int] = fooBar()
Ve varargs param götüren bir yöntem:
def myMethod(a: String, b: Int*) = {...}
bir varargs param olarak yönteme seçeneği geçmesine herhangi bir yolu var mı? Yani, seçenek Some(3)
ise 3'ü geçer ve None
ise hiçbir şey iletmez.
myMethod("xyz", myOption: _*)
ama derleyici bir Seq[Int]
gerektirdiğini yakınır:
açıkça argüman yazarak çalıştı scala: How to pass an expanded list as varargs into a method? cevabını deneme. Option
'un Seq
uygulanmadığı ve önceden örtük bir dönüştürme yapılmadığı görülüyor.
Derleyicinin bir Seq
istediği düşünüldüğünde, elbette myOption.toList: _*
'u geçebilirim, ancak daha güzel bir yol var mı?
Sizin yönteminiz bir "Seq" gerektirir? Daha genel toplama işlemleri ile yazabilirsiniz (ör: foreach, harita, filtre, vb.) – schmmd
@schmmd Bu özel durumda, 'myMethod' bir üçüncü taraf kitaplığının parçasıdır, bu yüzden kullanmaktan başka çarem yok. varargs. Bu benim kendi kodumdu, muhtemelen 'Int * 'yerine' İterable '[Int]' yi almayı ve kendimi bu beladan kurtarmam için yeniden yazma yöntemini yeniden yazabilirim! –