【发布时间】:2016-04-24 05:43:06
【问题描述】:
Hash 的 Ruby 可枚举方法需要 2 个参数,一个用于键,一个用于值:
hash.each { |key, value| ... }
但是,我注意到当您只传递一个参数时,可枚举方法之间的行为不一致:
student_ages = {
"Jack" => 10,
"Jill" => 12,
}
student_ages.each { |single_param| puts "param: #{single_param}" }
student_ages.map { |single_param| puts "param: #{single_param}" }
student_ages.select { |single_param| puts "param: #{single_param}" }
student_ages.reject { |single_param| puts "param: #{single_param}" }
# results:
each...
param: ["Jack", 10]
param: ["Jill", 12]
map...
param: ["Jack", 10]
param: ["Jill", 12]
select...
param: Jack
param: Jill
reject...
param: Jack
param: Jill
如您所见,对于each 和map,单个参数被分配给[key, value] 数组,但对于select 和reject,参数只有key。
这种行为有什么特殊原因吗?文档似乎根本没有提到这一点。给出的所有示例都假设您传入了两个参数。
【问题讨论】:
标签: ruby hash enumerable