具体来说,我在考虑6.3的等效功能:
答案 0 :(得分: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)"
答案 1 :(得分: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
创建实例后,无法更改方法本身。