2011-08-01 26 views

回答

5

Scala是一種靜態語言,因此所有的代碼應該在編譯時存在。但是,您可以使用Pimp-My-Library方法來模擬python功能,以將方法添加到現有類中,而無需修改類本身。但是,您無法更改現有的方法。例如:

class Foo(val i: Int) 

class RichFoo(f: Foo) { 
    def prettyPrint = "Foo(" + i + ")" 
} 

implicit def enrichFoo(f: Foo) = new RichFoo(f) 

val foo = new Foo(667) 

println(foo.prettyPrint) // Outputs "Foo(667)" 
4

你可以做

class Class { 
    var method =() => println("Hey, a method (actually, a function bound to a var)") 
} 

val instance = new Class() 
instance.method() 
// Hey, a method (actually, a function bound to a var) 

val new_method =() => println("New function") 
instance.method = new_method 

instance.method() 
// New function 

方法本身不能改變的實例被創建之後。

相關問題