Tag: 哈希

Ruby Hash .keys和.values,可以安全地假设相同的顺序?

基本的irb测试表明Ruby Hash以匹配顺序返回.keys和.values 。 假设是这种情况可以安全吗?

Ruby 1.9正则表达式作为哈希键

我正在尝试这个例子myhash = {/(\d+)/ => “hello”}与ruby 1.9.2p136(2010-12-25)[i386-mingw32] 。 它没有按预期工作(编辑:因为事实certificate它不应该像我期望的那样工作): irb(main):004:0> myhash = {/(\d+)/ => “hello”} => {/(\d+)/=>”Hello”} irb(main):005:0> myhash[2222] => nil irb(main):006:0> myhash[“2222”] => nil 在rubular中 ,在ruby1.8.7上, 正则表达式起作用。 我错过了什么?

Ruby使用什么哈希函数?

什么是Ruby的哈希函数算法?

初始化哈希值

我经常写这样的东西: a_hash[‘x’] ? a_hash[‘x’] += ‘ some more text’ : a_hash[‘x’] = ‘first text’ 应该有更好的方法来做到这一点,但我找不到它。

使用`Hash #fetch`优于`Hash#`的好处

我不确定在什么情况下我会想要使用Hash#fetch over Hash#[] 。 是否有一个常见的场景,它可以很好地使用?

将ruby哈希变成html列表

我正在尝试解析这样的yaml文件: a: a1: a2: b: b1: b11: b2: 我得到这样的哈希: {“a”=>{“a1″=>nil, “a2″=>nil}, “b”=>{“b1″=>{“b11″=>nil}, “b2″=>nil}} 我想把它变成一个列表: %ul %li a %ul %li a1 %li a2 %li b %ul %li b1 %ul %li b11 %li b2 我试图以最有效的方式搜索并不重要哈希有多深 最后我这样做了: KeyWords = %w(url) # Convert a multilevel hash into haml multilevel tree # Special KeyWords # url : item url def […]

Consistent String#hash仅基于字符串的内容

目标:将服务器处理的每个URL映射到0,1,2或3,尽可能均匀地分布。 虽然ruby的String#hash方法的文档说它将“根据字符串的长度和内容返回一个哈希值”,但这显然不是全部。 给定字符串的散列在解释器的调用之间不一致: $ irb ruby-1.9.2-p180 :001 > “foo”.hash => 360517580588231756 ruby-1.9.2-p180 :002 > ^D $ irb ruby-1.9.2-p180 :001 > “foo”.hash => -2716152678666510148 这意味着特定字符串的哈希值可能在服务器之间不同。 Rails String#hash内部使用String#hash将URL路径映射到四个资产主机之一(如果应用程序的asset_host 配置如此 ),但由于跨机器不一致,此function的效率要低得多; 不同的服务器可能会将相同的URL映射到不同的资产主机,从而降低了缓存,阴云密布,过早冷却茶杯的效率,破坏了其他优秀程序员的声誉。 你能否建议一个备用哈希函数,它可以有效,快速地在典型应用程序的URL空间中分配哈希值,最好是生成Fixnum的哈希值,最后,我想将它映射到四个资产主机之一?

Ruby在Hash中插入Key,Value元素

我想在我的哈希列表中添加元素,这些列表可以有多个值。 这是我的代码。 我不知道怎么解决它! class dictionary def initialize(publisher) @publisher=publisher @list=Hash.new() end def []=(key,value) @list << key unless @list.has_key?(key) @list[key] = value end end dic = Dictionary.new dic["tall"] = ["long", "word-2", "word-3"] p dic 提前谢谢了。 问候, KOKO

如何通过数字索引获取哈希值

哈希: h = {:a => “val1”, :b => “val2”, :c => “val3”} 我可以参考哈希值: h[:a], h[:c] 但我想通过数字索引来引用: h[0] => val1 h[2] => val3 可能吗?

为什么我需要在数组之前使用星号?

我不知道这是一个哈希问题还是数组问题,但我不知道为什么在第三个例子中需要使用星号(*)来获得填充数据的哈希值。 没有它,它会输出一个空哈希。 # -*- coding: utf-8 -*- require ‘pp’ pp [[:first_name, ‘Shane’], [:last_name, ‘Harvie’]] # => [[:first_name, “Shane”], [:last_name, “Harvie”]] pp [[:first_name, ‘Shane’], [:last_name, ‘Harvie’]].flatten # => [:first_name, “Shane”, :last_name, “Harvie”] pp Hash[*[[:first_name, ‘Shane’], [:last_name, ‘Harvie’]].flatten] # => {:first_name=>”Shane”, :last_name=>”Harvie”} pp Hash[[[:first_name, ‘Shane’], [:last_name, ‘Harvie’]].flatten] # => {} 以下是该方法的说明。 ————————————————————— Hash::[] Hash[ [key =>|, value]* […]