MST
星途 面试题库

面试题:Ruby元编程之模块方法动态添加

请使用Ruby元编程,在运行时为一个已有的模块动态添加一个实例方法。该方法接收一个字符串参数,并返回该字符串的反转结果。请详细说明你的思路及代码实现。
22.6万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试

思路

  1. 在Ruby中,模块(Module)是一个命名空间,可以包含方法、常量等。
  2. 元编程允许在运行时修改类和模块的结构。这里我们使用Module#define_method方法来动态为已有的模块添加实例方法。
  3. 对于字符串反转,Ruby字符串类本身提供了reverse方法来实现。

代码实现

# 假设已有模块
module ExistingModule
end

# 在运行时动态添加实例方法
ExistingModule.define_method(:reverse_string) do |str|
  str.reverse
end

# 使用新添加的方法
module_instance = ExistingModule.new
result = module_instance.reverse_string('hello')
puts result # 输出 'olleh'