関数を実装するディレクトリにすべての ruby ファイルを含めたいtoto()
。
pythonで私はやります:
res = []
for f in glob.glob("*.py"):
i = __import__(f)
if "toto" in dir(i):
res.append(i.toto)
そして、次のようにリストを使用できます。
for toto in res:
toto()
関数を実装するディレクトリにすべての ruby ファイルを含めたいtoto()
。
pythonで私はやります:
res = []
for f in glob.glob("*.py"):
i = __import__(f)
if "toto" in dir(i):
res.append(i.toto)
そして、次のようにリストを使用できます。
for toto in res:
toto()
RubyではインポートはPythonとは大きく異なります。Pythonではファイルとモジュールはほぼ同じですが、Rubyではそうではありません。モジュールを手動で作成する必要があります。
res = []
Dir.glob("*.rb") do |file|
# Construct a class based on what is in the file,
# and create an instance of it
mod = Class.new do
class_eval File.read file
end.new
# Check if it has the toto method
if mod.respond_to? :toto
res << mod
end
end
# And call it
res.each do |mod|
mod.toto
end
または多分もっとRuby慣用句:
res = Dir.glob("*.rb").map do |file|
# Convert to an object based on the file
Class.new do
class_eval File.read file
end.new
end.select do |mod|
# Choose the ones that have a toto method
mod.respond_to? :toto
end
# Later, call them:
res.each &:toto