Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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 on rails 接受哈希键并返回多个值的函数?_Ruby On Rails_Ruby - Fatal编程技术网

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"]}