Tag: 迭代器

如何遍历类的成员

这个: class Loan def initialize(amount, interest) @amount = amount @interest = interest end end loan1 = Loan.new(100, 0.1) Loan.each do |amount, interest| debt = debt + amount + (amount*interest) end 将无法工作,因为它试图迭代一个类而不是数组或散列。 是否需要迭代一个类的所有实例?

从迭代器调用迭代对象

如何从迭代块中调用迭代对象? # “self” is an Object, and not an iterating object I need. MyClass.some.method.chain.inject{|mean, i| (mean+=i)/self.size} 我的意思是我需要这样做: @my_object = MyClass.some.method.chain @my_object.inject{|mean, i| (mean+=i)/@my_object.size}

如何在Ruby中迭代部分哈希?

h = Hash.new (1..100).each { |v| h.store(v * 2, v*v) } 在不使用密钥的情况下迭代哈希的给定部分的最佳方法是什么? 例如,从元素10到元素20? 使用Ruby 1.9.3。 编辑 – 回应戴夫的评论: 最初我想通过密钥访问数据(因此哈希)。 但我也想按元素编号进行迭代。 顺便说一句,每个元素都是一个哈希。 那么,设计散列哈希值或哈希数组的最佳方法是什么,可以通过元素号迭代或通过键访问? 数据如下所示。 缺少日期。 6/23/2011 – > 5,6,8,3,6 6/26/2011 – > 6,8,4,8,5 6/27/2011 – > 8,4,3,2,7

Ruby将两个arrays合并为一个

这是我的情况。 我有2个arrays @names = [“Tom”, “Harry”, “John”] @emails = [“tom@gmail.com”, “h@gmail.com”, “j@gmail.com”] 我想将这两个组合成一些名为@list Array / Hash,这样我就可以在我的视图中迭代这样的东西: 我无法理解如何实现这一目标。 有什么想法吗?

声明实例变量迭代哈希!

我想做以下事情: 我想声明迭代字典的类的实例变量。 我们假设我有这个哈希值 hash = {“key1” => “value1″,”key2” => “value2″,”key3” => “value3”} 我希望将每个键作为类的实例变量。 我想知道我是否可以声明迭代遍历该哈希的变量。 像这样的东西: class MyClass def initialize() hash = {“key1” => “value1″,”key2” => “value2″,”key3” => “value3”} hash.each do |k,v| @k = v end end end 我知道这不起作用! 我只把这段代码放在一边看看你是否能理解我想要的更清楚。 谢谢!

如何从Ruby可枚举中获取列表?

我知道Python的list方法可以使用生成器中的所有元素。 Ruby中有类似的东西吗? 我知道 : elements = [] enumerable.each {|i| elements << i} 我也知道inject替代品。 有一些现成的方法吗?

在Ruby on Rails上解释Iterator语法

我开始学习Ruby on Rails并发现自己对语法感到困惑,所以我不得不阅读一些Ruby语法。 我从http://www.cs.auckland.ac.nz/references/ruby/doc_bundle/Manual/man-1.4/syntax.html学习了语法: method_call do [`|’ expr…`|’] expr…end 他们称之为迭代器。 我理解一个迭代器运行循环,但我不明白我应该如何阅读这个或者在这个语法中发生了什么。 我一直在RoR的截屏video中看到它并且这些词语有意义,但我实际上不知道发生了什么。 谁有人向我解释这个? 编辑:示例 respond_to do |format| format.json format.xml { render :xml => @posts } end

array.each和array.map有何不同?

可能重复: Array#each vs. Array #map ruby-1.9.2-p180 :006 > ary = [“a”, “b”] => [“a”, “b”] ruby-1.9.2-p180 :007 > ary.map { |val| p val } “a” “b” => [“a”, “b”] ruby-1.9.2-p180 :008 > ary.each { |val| p val } “a” “b” => [“a”, “b”] ruby-1.9.2-p180 :009 > ary.map { |val| val < [“a2”, “b2”] ruby-1.9.2-p180 :010 […]

ruby中的.each迭代器是否保证每次都在相同的元素上给出相同的顺序?

我正在使用列表’a’做这样的事情: a.each_with_index |outer, i| a.each_with_index |inner, j| if(j > i) # do some operation with outer and inner end end end 如果迭代器不会使用相同的顺序,这将不起作用。 我不关心命令究竟是什么,我只需要两个.each_with_index迭代器来使用相同的顺序。 我会假设它是一个数组的属性,它有一个固定的顺序,我只是偏执,迭代器不会使用该顺序…

如何使用每个迭代器获取数组索引或迭代次数?

我正在迭代遍历ruby中的数组。 有没有一种简单的方法可以获得迭代次数或数组索引而无需返回for循环?