MST

星途 面试题库

面试题:Ruby方法定义与参数传递的深度探索

考虑一种场景,在Ruby中定义一个元编程方法,该方法可以动态创建一系列方法,每个动态创建的方法接受不同数量和类型的参数(例如,有的方法接受两个整数参数并返回它们的乘积,有的方法接受一个字符串和一个整数参数,将字符串重复整数次后返回)。描述实现思路并给出关键代码示例。
17.8万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 使用Ruby的元编程能力,主要利用define_method方法来动态定义方法。
  2. 对于不同参数类型和数量的方法,在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)