复杂ruby注入法
我似乎无法理解这一点。请帮助我了解此代码对复杂ruby注入法,ruby,hash,hashmap,Ruby,Hash,Hashmap,我似乎无法理解这一点。请帮助我了解此代码对a变量的要求以及预期输出。提前谢谢 def function_name(a) a.inject({}){ |a,b| a[b] = a[b].to_i + 1; a}.\ reject{ |a,b| b == 1 }.keys end 它希望a是一个数组,但数组由什么组成似乎并不重要,因此您需要一些其他线索来知道数组中应该包含什么 代码所做的是相当直接的前言。对于数组中的每个项,它将其用作散列中的键。然后它基本上计算它看到该键的次数。最后,它会
a
变量的要求以及预期输出。提前谢谢
def function_name(a)
a.inject({}){ |a,b| a[b] = a[b].to_i + 1; a}.\
reject{ |a,b| b == 1 }.keys
end
它希望a是一个数组,但数组由什么组成似乎并不重要,因此您需要一些其他线索来知道数组中应该包含什么 代码所做的是相当直接的前言。对于数组中的每个项,它将其用作散列中的键。然后它基本上计算它看到该键的次数。最后,它会删除所有只显示一次的项目
它返回数组
a
中出现2次或更多次的唯一项。它希望a成为一个数组,但数组由什么组成似乎无关紧要,因此您需要一些其他线索来知道数组中应该包含什么
代码所做的是相当直接的前言。对于数组中的每个项,它将其用作散列中的键。然后它基本上计算它看到该键的次数。最后,它会删除所有只显示一次的项目
它返回数组
a
中显示2次或以上的唯一项。假设a
是一个数组
该函数首先统计关键点的出现次数
a = ['a', 'b', 'c', 'b']
a.inject({}) { |a,b|
# a: a result hash, this is initially an empty hash (`{}` passed to inject)
# b: each element of the array.
a[b] = a[b].to_i + 1 # Increase count of the item
a # The return value of this block is used as `a` argument of the block
# in the next iteration.
}
# => {"a"=>1, "b"=>2, "c"=>1}
然后,它会过滤多次出现的项目:
...reject{ |a,b|
# a: key of the hash entry, b: value of the hash entry (count)
b == 1 # entry that match this condition (occurred only once) is filtered out.
}.keys
# => ["b"]
因此,应该使用
get\u duplicated\u items
等函数名,而不是function\u name
,以更好地描述其用途。假设a
是一个数组
该函数首先统计关键点的出现次数
a = ['a', 'b', 'c', 'b']
a.inject({}) { |a,b|
# a: a result hash, this is initially an empty hash (`{}` passed to inject)
# b: each element of the array.
a[b] = a[b].to_i + 1 # Increase count of the item
a # The return value of this block is used as `a` argument of the block
# in the next iteration.
}
# => {"a"=>1, "b"=>2, "c"=>1}
然后,它会过滤多次出现的项目:
...reject{ |a,b|
# a: key of the hash entry, b: value of the hash entry (count)
b == 1 # entry that match this condition (occurred only once) is filtered out.
}.keys
# => ["b"]
因此,应该使用
get\u duplicated\u items
等函数名,而不是function\u name
来更好地描述其用途。谢谢!这有所帮助。我还有一个相关的问题。街区尽头的时段是多少?“a}
”我发现如果我不包含此项,则该方法将失败。@LelandSmith,此处的拒绝
返回一个哈希值.keys
仅用于获取哈希的键。(
调用方法键
)对不起@falsetru我指的是。在\u i+1的末尾;a} .
再次感谢您的帮助@LelandSmith,拒绝
方法也是如此。尾随的反斜杠(\
)用于行继续。谢谢!这有所帮助。我还有一个相关的问题。街区尽头的时段是多少?“a}
”我发现如果我不包含此项,则该方法将失败。@LelandSmith,此处的拒绝
返回一个哈希值.keys
仅用于获取哈希的键。(
调用方法键
)对不起@falsetru我指的是。在\u i+1的末尾;a} .
再次感谢您的帮助@LelandSmith,拒绝
方法也是如此。尾随反斜杠(\
)用于行继续。