2012-09-28 29 views
9

: Burada ne demektir 'MyType = Int => Boole' scala beyanı aşağıda ne demektir

type MyType = Int => Boolean 

benim anlayış:

Ben yeni bir tür 'MyType' ilan ediyorum ama yüksek mertebeden fonksiyonu ile ne kastedildiğini 'Int => Boole'

+1

Not (http://www.coursera.org/course/progfun) "2. Hafta: Daha Yüksek Sıralama Fonksiyonları" atama ;-)) – netzwerg

+0

@netzwerg Evet, 'basit' şeyleri bile zor buluyorum. – user701254

+1

Endişelenmeyin, bu gerçekten çok basit: Daha yüksek sıralı fonksiyonlar, ya giriş parametresi olarak başka bir işlev alan veya başka bir işlev döndüren/çıkan fonksiyonlardır ([Wikipedia] (http://en.wikipedia.org/wiki/Higher) -order_function)) – netzwerg

cevap

14

çok daha yeni tip takma ilan olarak yeni tip ilan değil. Hala aynı tipler: ama takma adlar biraz daha özlü yazmanıza izin veriyor.

Int => Boolean, bir bağımsız değişken olan bir Int alır ve bir Boole döndüren bir işlev türüdür. Örneğin

, tip Int => Boolean olabilir "den büyük 5" gibi bir işlevi:

type MyType = Int => Boolean 
val greaterThan5: MyType = (x: Int) => x > 5 
greaterThan5(7) // true 
3

Sen, aşağıdaki derler doğrudur:

İşte
type MyType = Int => Boolean 
def positive(x: Int) = x > 0 
val fun: MyType = positive 
fun(42) //yields true 

Tür takma MyType söyleyerek beyan Int alarak ve Boolean dönen bir işleve eşdeğerdir. Sonra böyle bir beyanla eşleşen bir yöntem oluşturursunuz. Son olarak, bu yöntemi MyType türünde bir değişkene atarsınız. Derler ve iyi çalışır. Bu yeni tip sadece takma, olmadığını

Not: 'Int => Boolean` pasajı [Coursera en] kaynaklanmaktadır olmasa bile, daha yüksek dereceden bir fonksiyon (_not_ olduğu

trait MyType2 extends (Int => Boolean) 
val fun2: MyType2 = positive _ 
error: type mismatch; 
found : Int => Boolean 
required: MyType2 
     val fun2: MyType2 = positive _ 
         ^
İlgili konular