相关疑难解决方法(0)

如何获取在Ruby中迭代哈希的特定输出?

我希望得到一个迭代Ruby Hash的特定输出.

这是我想迭代的哈希:

hash = {
  1 => ['a', 'b'], 
  2 => ['c'], 
  3 => ['d', 'e', 'f', 'g'], 
  4 => ['h']
}
Run Code Online (Sandbox Code Playgroud)

这是我想得到的输出:

1-----

a

b

2-----

c

3-----

d 

e

f

g

4-----

h
Run Code Online (Sandbox Code Playgroud)

在Ruby中,如何使用Hash获得这样的输出?

ruby hash output

210
推荐指数
5
解决办法
28万
查看次数

Ruby中的"for"vs"each"

我刚才有一个关于Ruby循环的快速问题.这两种迭代集合的方式有区别吗?

# way 1
@collection.each do |item|
  # do whatever
end

# way 2
for item in @collection
  # do whatever
end
Run Code Online (Sandbox Code Playgroud)

只是想知道这些是否完全一样,或者是否有一个微妙的差异(可能是什么时候@collection是零).

ruby iteration each foreach loops

196
推荐指数
5
解决办法
23万
查看次数

为什么==比eql更快?

我在文档中读取了String类,它eql?是一个严格的相等运算符,没有类型转换,并且==是一个等于运算符,它尝试将其参数的第二个转换为String,并且此方法的C源代码确认:

eql?源代码如下:

static VALUE
rb_str_eql(VALUE str1, VALUE str2)
{
    if (str1 == str2) return Qtrue;
    if (TYPE(str2) != T_STRING) return Qfalse;
    return str_eql(str1, str2);
}
Run Code Online (Sandbox Code Playgroud)

==源代码如下:

VALUE
rb_str_equal(VALUE str1, VALUE str2)
{
    if (str1 == str2) return Qtrue;
    if (TYPE(str2) != T_STRING) {
        if (!rb_respond_to(str2, rb_intern("to_str"))) {
            return Qfalse;
        }
        return rb_equal(str2, str1);
    }
    return str_eql(str1, str2);
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试对这些方法进行基准测试时,我感到惊讶的==是,速度比eql?高达20%快!我的基准代码是:

require "benchmark"

RUN_COUNT = 100000000
first_string = "Woooooha"
second_string …
Run Code Online (Sandbox Code Playgroud)

ruby string benchmarking equality

17
推荐指数
1
解决办法
975
查看次数

在Ruby中循环的首选方法是什么?

为什么在Ruby中each循环优先于for循环?时间复杂度是否存在差异,或者它们只是语法上的不同?

ruby each for-loop

9
推荐指数
2
解决办法
701
查看次数

ruby中的enumerable和iterator方法之间的区别

我学习红宝石.

我想知道ruby中的enumerable和iterator方法之间的区别,以及为什么我们使用枚举器方法..

对我而言看起来都一样.

我想知道两者之间的区别

正常的迭代器方法

3.times do
|x| puts x
end
Run Code Online (Sandbox Code Playgroud)

每个使用枚举器

enumerator = 3.times
enumerator.each do
|x| puts x
end
Run Code Online (Sandbox Code Playgroud)

也是为了字符串

"scriptkiddie".each_char{|x| puts x}
Run Code Online (Sandbox Code Playgroud)

使用枚举器对象

"scriptkiddie".enum_for(:each_char).each{|x| puts x}
Run Code Online (Sandbox Code Playgroud)

使用枚举器有什么好处.我应该在哪里使用Enumerator?

请帮我理解其中的区别

ruby

2
推荐指数
1
解决办法
739
查看次数

标签 统计

ruby ×5

each ×2

benchmarking ×1

equality ×1

for-loop ×1

foreach ×1

hash ×1

iteration ×1

loops ×1

output ×1

string ×1