Tag: 哈希

如何在Ruby中实现选项哈希?

如何实现选项哈希? 具有选项哈希的类的结构如何? 说我有一个人课。 我想实现一个像my_age这样的方法,当被调用时会告诉我使用选项哈希的年龄。

通过基于项的属性对对象数组进行分组来构建哈希

我想知道在ruby 1.9中是否有更规范的方法来做到这一点 我有一个包含一堆对象的数组,我想使用数组中每个对象的属性将它们分组为Hash。 很简单的例子: > sh = {} => {} > aers = %w(abcd ab bc de abc) => [“a”, “b”, “c”, “d”, “ab”, “bc”, “de”, “abc”] > aers.each do |aer| > sh[aer.size] = [] if sh[aer.size].nil? > sh[aer.size] < end => [“a”, “b”, “c”, “d”, “ab”, “bc”, “de”, “abc”] > sh => {1=>[“a”, “b”, […]

如何将键和值推送到Ruby的空哈希中?

我有一个字典类,希望能够使用’add’方法将键(作为关键字)和值(作为定义)推送到空哈希中。 我不明白如何在语法上写这个。 我也包含了一个RSPEC文件。 ruby: class Dictionary attr_accessor :keyword, :definition def entries @hash = {} end def add(options) options.map do |keyword, definition| @hash[keyword.to_sym] = definition end end end Rspec的: require ‘dictionary’ describe Dictionary do before do @d = Dictionary.new end it ‘can add whole entries with keyword and definition’ do @d.add(‘fish’ => ‘aquatic animal’) @d.entries.should == […]

如何迭代哈希数组并将值返回到单个字符串中?

对不起,如果这很明显,我只是没有得到它。 如果我有一系列哈希像: people = [{:name => “Bob”, :occupation=> “Builder”}, {:name => “Jim”, :occupation => “Coder”}] 我想迭代数组并输出字符串,如:“Bob:Builder”。 我该怎么办? 我理解如何迭代,但我仍然有点迷失。 现在,我有: people.each do |person| person.each do |k,v| puts “#{v}” end end 我的问题是我不明白如何返回两个值,只分别返回每个值。 我错过了什么? 谢谢您的帮助。

将一组键和一组值转换为Ruby中的哈希

我有两个像这样的数组: keys = [‘a’, ‘b’, ‘c’] values = [1, 2, 3] Ruby中有一种简单的方法可以将这些数组转换为以下哈希吗? { ‘a’ => 1, ‘b’ => 2, ‘c’ => 3 } 这是我的方式,但我觉得应该有一个内置的方法来轻松做到这一点。 def arrays2hash(keys, values) hash = {} 0.upto(keys.length – 1) do |i| hash[keys[i]] = values[i] end hash end

使用带有默认值的选项哈希作为ruby中的参数是一种很好的干净方法

假设我想要一个像这样调用的方法: tiger = create_tiger( :num_stripes => 12, :max_speed => 43.2 ) tiger.num_stripes # will be 12 其中一些选项具有默认值: tiger = create_tiger( :max_speed => 43.2 ) tiger.num_stripes # will have some default value 在方法实现中实现默认行为的一种很好的惯用ruby方法是什么?

从数组和频率创建哈希

我有一个数组[1,2,4,5,4,7] ,我想找到每个数字的频率并将其存储在哈希中。 我有这个代码,但它返回NoMethodError: undefined method ‘+’ for nil:NilClass def score( array ) hash = {} array.each{|key| hash[key] += 1} end 期望的输出是 {1 => 1, 2 => 1, 4 => 2, 5 => 1, 7 => 1 }

Ruby:获取哈希中的所有键(包括子键)

让我们有这个哈希: hash = {“a” => 1, “b” => {“c” => 3}} hash.get_all_keys => [“a”, “b”, “c”] 我怎么能得到所有键,因为hash.keys只返回[“a”, “b”]

如何排序不是简单的哈希(散列哈希)

我有这样的哈希 { 55 => {:value=>61, :rating=>-147}, 89 => {:value=>72, :rating=>-175}, 78 => {:value=>64, :rating=>-155}, 84 => {:value=>90, :rating=>-220}, 95 => {:value=>39, :rating=>-92}, 46 => {:value=>97, :rating=>-237}, 52 => {:value=>73, :rating=>-177}, 64 => {:value=>69, :rating=>-167}, 86 => {:value=>68, :rating=>-165}, 53 => {:value=>20, :rating=>-45} } 我怎样才能对它进行排序:评分 ? 或者我应该使用一些不同的结构?

使用符号作为ruby方法的参数

我正在学习rails并回到ruby来了解rails中的方法(以及ruby真正起作用)。 当我看到方法调用时: validates validates :first_name, :presence => true 我有点迷惑不解了。 你如何在ruby中编写接受符号或哈希的方法。 validation方法的源代码也令人困惑。 有人可以简化这个主题,在我的ruby类和实例方法中使用符号作为参数吗? 更新: 好的@Dave! 但我尝试的是: def full_name (:first_name, :last_name) @first_name = :first_name @last_name = :last_name p “#{@first_name} #{last_name}” end full_name(“Breta”, “Von Sustern”) 这显然会引发错误。 我试图理解:如果符号像任何其他值一样,为什么将这样的符号作为参数传递错误?