Ruby on rails 接受哈希键并返回多个值的函数?
我正在做一个练习题,要求我创建一个由所有者组成的小组 “接受包含每个文件名的文件所有者名称的哈希 返回一个哈希值,该哈希值包含每个所有者名称的文件名数组(按任意顺序) 例如,对于哈希Ruby on rails 接受哈希键并返回多个值的函数?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在做一个练习题,要求我创建一个由所有者组成的小组 “接受包含每个文件名的文件所有者名称的哈希 返回一个哈希值,该哈希值包含每个所有者名称的文件名数组(按任意顺序) 例如,对于哈希 {'Input.txt' => 'Randy', 'Code.py' => 'Stan', 'Output.txt' => 'Randy'} group\u by\u owner方法应返回 {'Randy' => ['Input.txt', 'Output.txt']`, `'Stan'
{'Input.txt' => 'Randy', 'Code.py' => 'Stan', 'Output.txt' => 'Randy'}
group\u by\u owner
方法应返回
{'Randy' => ['Input.txt', 'Output.txt']`, `'Stan' => ['Code.py']}
到目前为止,我无法获得任何要传递的内容。我希望我应该接受散列,因此我实现了一个新的files={}
has,并输入了相应的值。但我得到的只是语法错误
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)
但我仍然会遇到错误。我完全被卡住了。我显然是Ruby的新手,所以请耐心听我说。有谁知道更好的解决方案吗?关键是:方法接受散列,你不必构建散列,只需将其传递给方法。你的方法只需处理传递的参数即可 当我开始编码时,我的想法和你现在一样;)
def组由所有者(文件)创建
BERTER|hash=hash.new{| hash,key | hash[key]=[]}
文件。每个_带有_对象(更好的_散列){|(k,v),散列|散列[v]'Randy','Code.py'=>'Stan','Output.txt'=>'Randy'})
#=>{“Randy”=>[“Input.txt”、“Output.txt”],“Stan”=>[“Code.py”]}
重点是:方法接受散列,您不必构建散列,只需将其传递给方法。您的方法只需使用传递的参数即可
当我开始编码时,我的想法和你现在一样;)
def组由所有者(文件)创建
BERTER|hash=hash.new{| hash,key | hash[key]=[]}
文件。每个_带有_对象(更好的_散列){|(k,v),散列|散列[v]'Randy','Code.py'=>'Stan','Output.txt'=>'Randy'})
#=>{“Randy”=>[“Input.txt”、“Output.txt”],“Stan”=>[“Code.py”]}
非常有帮助。谢谢!非常有帮助。谢谢!
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'])
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"]}