我在课堂上重复写了相同的函数。有没有一种方法可以一次声明一个函数,而只需在每个相关类中引用该函数声明以使其成为该类的一部分?我想做类似的事情:
def add_func
expand self.new_func
puts "hello"
end
end
class A
import "add_func"
end
A.new_func
# >> hello world
我正在寻找一个类方法,而不是一个实例方法,但是我想知道如何做到这两个。我要寻找的Ruby构造是什么?
答案 0 :(得分:3)
您可以扩展如下方法:
module SomeModule
def foo
true
end
end
class SomeClass
extend SomeModule
end
SomeClass.foo
答案 1 :(得分:0)
您无法将各个方法打包到其各自的模块中并进行扩展:
module MyModule
module NewFunc
def new_func
puts "hello"
end
end
end
class A
extend MyModule::NewFunc
end
A.new_func
通过一些元编程/ monkeypatching,您可以提供一种方法来仅扩展模块的某些方法,但是我认为我展示的方法足够好。
如果您想这样做,以便可以导入单个方法,或者可以导入所有方法,则可以这样做:
module MyModule
module NewFunc
def new_func
puts "hello"
end
end
module NewFunc2
def new_func2
puts "hello2"
end
end
include NewFunc, NewFunc2 # this adds them to MyModule directly
end
class A
extend MyModule
end
A.new_func
A.new_func2