def dynamic_processing(**kwargs)
if kwargs.key?(:operation)
case kwargs[:operation]
when :add
result = kwargs[:a] + kwargs[:b]
puts "执行加法操作,结果是: #{result}"
when :multiply
result = kwargs[:a] * kwargs[:b]
puts "执行乘法操作,结果是: #{result}"
else
puts "不支持的操作"
end
else
puts "未指定操作"
end
end
# 第一种关键字参数传入方式
dynamic_processing(operation: :add, a: 2, b: 3)
# 输出: 执行加法操作,结果是: 5
# 第二种关键字参数传入方式
dynamic_processing(operation: :multiply, a: 4, b: 5)
# 输出: 执行乘法操作,结果是: 20
不使用关键字参数而使用普通参数的缺点:
- 可读性差:使用普通参数时,调用者需要严格按照参数顺序传入值,对于复杂的逻辑,很难直观地理解每个参数的含义。例如
dynamic_processing(:add, 2, 3)
,很难立刻明白:add
代表加法操作,参数顺序一旦弄错,结果就会错误且难以调试。
- 维护困难:如果方法的参数数量增多或者顺序发生改变,所有调用该方法的地方都需要相应修改。而关键字参数则不受顺序影响,只需要确保参数名正确即可,大大降低了维护成本。
- 扩展性差:如果后续需要添加新的参数,使用普通参数可能会导致参数列表混乱,影响原有逻辑。而关键字参数可以轻松添加新的参数,不会影响已有的调用方式。