gpt4 book ai didi

ruby-on-rails - 如何在 Ruby/Rails 中重新打开模块

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:08 27 4
gpt4 key购买 nike

我有一个模块文件位于 vendor/plugins 文件夹中。

module Greetings
def self.greet(message)
return "good morning" if message=="gm"
return "evening" if message=="ge"
return "good afternoon" if message=="ga"
end
end

当我执行 Greetings.greet("ge") 时,我得到“evening”作为输出。我想在不更改上述 Greetings 模块的情况下更改此行为(显而易见的原因是它是一个外部插件)。

我的问题很简单。当说我调用 Greetings.greet("ge") 应该返回“A Very Good Evening”并且对于所有其他输入,它应该返回原始模块返回的内容时我应该怎么做。

因为我使用的是 Rails,所以我会把它写在 config/initializers 文件夹中。

PS:我已经提出了similar question上课。但我真的很想知道它如何适用于模块。

最佳答案

这对我适用于 Ruby 1.8.7 和 Ruby 1.9.2

module Greetings
def self.greet(message)
return "good morning" if message=="gm"
return "evening" if message=="ge"
return "good afternoon" if message=="ga"
end
end

p Greetings.greet("ge") # => "evening"

module Greetings
class << self
alias_method :old_greet, :greet

def greet(message)
return self.old_greet(message) unless message == "ge"
return "A Very Good Evening"
end
end
end

p Greetings.greet("ge") # => "A Very Good Evening"
p Greetings.greet("gm") # => "good morning"

关于ruby-on-rails - 如何在 Ruby/Rails 中重新打开模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888135/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com