我在我的课堂上反复写同样的函数。是否有方法声明一个函数一次,并在每个相关类中引用函数声明,使其成为类的一部分?我想做这样的事情:
def add_func
expand self.new_func
puts "hello"
end
end
class A
import "add_func"
end
A.new_func
# >> hello world
我希望创建一个类方法,而不是一个实例方法,但我想知道如何做到这两种方法。我要寻找的Ruby构造是什么?
发布于 2018-11-04 12:15:51
您可以像这样扩展这些方法:
module SomeModule
def foo
true
end
end
class SomeClass
extend SomeModule
end
SomeClass.foo
发布于 2018-11-04 12:36:54
您可以将单个方法打包到它们自己的模块中,并对它们进行扩展:
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
https://stackoverflow.com/questions/53144833
复制相似问题