Ruby编程:灵活处理参数与代码块的艺术
1. Ruby方法参数处理的灵活性
在思考方法的参数时,不同人有不同的设想。有人会想到类似数学函数 f(x,y,z) 那样,每个参数都必要且顺序重要;也有人会想到像 create_person( first_name: "Joe", last_name: "Frasier") 这样处理配置数据的关键字参数。Ruby在处理方法参数时提供了极大的灵活性,这虽可能带来一些困惑,但也是构建出色API的关键。
下面是几种不同的参数处理方式示例:
# 标准顺序参数
def distance(x1,y1,x2,y2)
Math.hypot(x2 - x1, y2 - y1)
end
# 带可选参数的顺序参数
def load_file(name,mode="rb")
File.open(name,mode)
end
# 伪关键字参数
def story(options)
"#{options[:person]} went to town, riding on a #{options[:animal]}"
end
# 将参数视为数组
def distance2(*points)
distance(*points.flatten)
end
调用这些方法可以看到它们的实际效果:
>> distance(3,3,4,5)
=> 2.23606797749979
>> load_f
Ruby参数与代码块艺术
超级会员免费看
订阅专栏 解锁全文
31

被折叠的 条评论
为什么被折叠?



