2010-01-23 27 views

回答

1

,補充deamonDaniel,這裏的另一個:

abstract class A { def f: (Int)=>Int } 
class B extends A { val f = identity _ } 
class C extends A { def f = identity _ } 
class D extends A { def f = (x:Int) => -x } 

如果你被卡住一個正常的閃避,那麼你可以做的最好的是

abstract class Z { def f(x:Int):Int } 
class Y extends Z { def f(x:Int) = identity(x) } 
7

可以使用類型功能的一個領域是這樣的:

abstract class A { val f: (Int) => Int} 

val identity = (x: Int) => x*x 

class B extends A { override val f = identity } 
+1

,是有一種方法和這樣的值之間的差異? (P.S.身份已經定義了ID Predef,我不想讓它參數化;) – 2010-01-23 22:25:10

+3

Scala中的方法不是*第一類實體。值是。函數是值(函數必須是功能語言定義的第一類)。方法通過部分應用被解除了功能。 – 2010-01-23 22:52:54

3

只是爲了補充deamonanswer,這裏有一個替代的例子:

abstract class A { val f: (Int) => Int } 
class B extends A { val f: (Int) => Int = identity _ } 
相關問題