2011-08-01 11 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 

方法を行うことができます。

関連する問題