面试题答案
一键面试实现思路
- 使用Ruby的元编程能力,主要利用
define_method
方法来动态定义方法。 - 对于不同参数类型和数量的方法,在
define_method
块内根据传递的参数进行相应的逻辑处理。
关键代码示例
def create_dynamic_methods
# 创建接受两个整数参数并返回乘积的方法
define_method(:multiply_numbers) do |a, b|
a * b if a.is_a?(Integer) && b.is_a?(Integer)
end
# 创建接受一个字符串和一个整数参数,重复字符串的方法
define_method(:repeat_string) do |str, num|
str * num if str.is_a?(String) && num.is_a?(Integer)
end
end
# 调用元编程方法创建动态方法
create_dynamic_methods
# 调用动态创建的方法
puts multiply_numbers(3, 5)
puts repeat_string('hello ', 3)