Scala'da yeni (Scala kod koşucusu sürüm 2.7.7.final) ve neden arayanın neden gerektirdiğini anlamıyorum. Yüksek mertebeden fonksiyonlar kullandığımızda parametre tipi sağlamak.Scala Genel İşlev Değerleri (Anonim İşlev) - Eksik Parametre Türü (Hata)
Aşağıdaki örnekte, tek bir işlevi olan tek bir stand nesnesine (Util
) sahibim. Ancak, Main
satırında, arayan parametre tipini anonim işleve iletmelidir.
Scala neden işlev türünü Array
türünden (yani String
) türetmiyor? Bunu yapmanın bir yolu var mı? sahip olduğu tek şey arrayOne
ve arrayTwo
olurdu bu noktada gitmeyi çünkü
object Util {
// Just for fun! Suppose that the arrayOne and arrayTwo are all the same length.
// will swap the elements from arrayOne to ArrayTwo.
def swap[T](arrayOne:Array[T], arrayTwo:Array[T] , f:(T,T) =>(T,T)) {
for(i <- 0 until (arrayOne.length min arrayTwo.length)){
val (left, right) = f(arrayOne(i),arrayTwo(i))
arrayOne(i) = left
arrayTwo(i) = right
}
}
}
object Main extends Application {
val arrayOne = Array("A","B","C")
val arrayTwo = Array("D","E","F")
//If not specified the type String,the compiler throws "Missing Parameter Type" error
Util swap(arrayOne, arrayTwo,(elem1:String,elem2:String)=>(elem2,elem1))
}
Benim için çalışır, yalnızca Util nesnesinde bir} eksik. –
@Thomas çalışmasında türünü belirttiğinden işe yarar. :-) –
@Daniel Tip açıklaması, bu kodu bana rahatsız eden son şey. Bunu düzeltmek kaba olacak mı diye merak ediyorum. Son çizgiye kadar kaybolan dikkat. –