Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复杂ruby注入法_Ruby_Hash_Hashmap - Fatal编程技术网

复杂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,
拒绝
方法也是如此。尾随反斜杠(
\
)用于行继续。