gpt4 book ai didi

ruby-on-rails - 接受哈希键并返回多个值的函数?

转载 作者:行者123 更新时间:2023-12-02 00:48:00 24 4
gpt4 key购买 nike

我正在做一个练习题,要求我创建一个 group_by_owners 函数

“接受包含每个文件名的文件所有者名称的散列。

返回一个散列,其中包含每个所有者名称的文件名数组,顺序不限。

例如,对于哈希

{'Input.txt' => 'Randy', 'Code.py' => 'Stan', 'Output.txt' => 'Randy'}

group_by_owners 方法应该返回

{'Randy' => ['Input.txt', 'Output.txt']`, `'Stan' => ['Code.py']}

到目前为止,我无法让任何东西通过。我希望我应该接受一个散列,所以我实现了一个新的 files = {} 并输入了适当的值。但我得到的只是一个语法错误

module FileOwners
def self.group_by_owners(files)
files = {}
files['Randy'] << 'Input.txt' << 'Output.txt'
files['Stan'] << 'Code.py'
end
end


puts FileOwners.group_by_owner(files)

我尝试过其他做法,包括

module FileOwners
def self.group_by_owners(files)
files = {
'Randy' => 'Input.txt',
'Randy' => 'Output.txt'
'Stan' => 'Code.py'
}
end
end


puts FileOwners.group_by_owners(files['Randy'])

但我仍然遇到错误。我完全卡住了。我显然是 Ruby 的新手,所以请多多包涵。有谁知道更好的解决方案?

最佳答案

要点是:方法接受 哈希,您不必构建哈希,只需将其传递给方法即可。您的方法必须仅适用于传递的参数。

当我开始编码时,我的想法和你现在的想法一样;)

def group_by_owners(files)
better_hash = Hash.new { |hash, key| hash[key] = [] }
files.each_with_object(better_hash) {|(k, v), hash| hash[v] << k}
end

group_by_owners({'Input.txt' => 'Randy', 'Code.py' => 'Stan', 'Output.txt' => 'Randy'})
#=> {"Randy"=>["Input.txt", "Output.txt"], "Stan"=>["Code.py"]}

关于ruby-on-rails - 接受哈希键并返回多个值的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42304264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com