当前位置:  开发笔记 > 后端 > 正文

什么是Ruby中的"for"

如何解决《什么是Ruby中的"for"》经验,为你挑选了3个好方法。

在Ruby中:

for i in A do
    # some code
end

是相同的:

A.each do |i|
   # some code
end

for 不是内核方法:

for红宝石究竟是什么" "

有没有办法使用其他关键字来做类似的事情?

就像是:

 total = sum i in I {x[i]}

映射到:

 total = I.sum {|i] x[i]}

Firas Assaad.. 46

这几乎是语法糖.一个区别是,虽然for会使用围绕它的代码范围,但each在其块内创建一个单独的范围.比较以下内容:

for i in (1..3)
  x = i
end
p x # => 3

(1..3).each do |i|
  x = i
end
p x # => undefined local variable or method `x' for main:Object


Jeremy Ruten.. 14

for只是该each方法的语法糖.通过运行此代码可以看到:

for i in 1 do
end

这会导致错误:

NoMethodError: undefined method `each' for 1:Fixnum

-1因为两者之间存在差异,并且它们并不总是等价的. (3认同)


rampion.. 9

因为只是语法糖.

从镐:

因为...... In

之前我们说只有内置的Ruby循环原语是while和until.那么什么是"为了"的东西呢?好吧,因为几乎是一堆语法糖.当你写作

for aSong in songList
  aSong.play
end

Ruby将其转换为:

songList.each do |aSong|
  aSong.play
end

for循环和每个表单之间的唯一区别是正文中定义的局部变量的范围.这将在第87页讨论.

您可以使用for来遍历响应每个方法的任何对象,例如Array或Range.

for i in ['fee', 'fi', 'fo', 'fum']
  print i, " "
end
for i in 1..3
  print i, " "
end
for i in File.open("ordinal").find_all { |l| l =~ /d$/}
  print i.chomp, " "
end

生产:

fee fi fo fum 1 2 3 second third

只要您的类定义了合理的每个方法,您就可以使用for循环来遍历它.

class Periods
  def each
    yield "Classical"
    yield "Jazz"
    yield "Rock"
  end
end


periods = Periods.new
for genre in periods
  print genre, " "
end

生产:

Classical Jazz Rock

Ruby没有列表推导的其他关键字(就像你上面提到的总和例子). for不是一个非常受欢迎的关键字,方法syntax(arr.each {})通常是首选.



1> Firas Assaad..:

这几乎是语法糖.一个区别是,虽然for会使用围绕它的代码范围,但each在其块内创建一个单独的范围.比较以下内容:

for i in (1..3)
  x = i
end
p x # => 3

(1..3).each do |i|
  x = i
end
p x # => undefined local variable or method `x' for main:Object



2> Jeremy Ruten..:

for只是该each方法的语法糖.通过运行此代码可以看到:

for i in 1 do
end

这会导致错误:

NoMethodError: undefined method `each' for 1:Fixnum


-1因为两者之间存在差异,并且它们并不总是等价的.

3> rampion..:

因为只是语法糖.

从镐:

因为...... In

之前我们说只有内置的Ruby循环原语是while和until.那么什么是"为了"的东西呢?好吧,因为几乎是一堆语法糖.当你写作

for aSong in songList
  aSong.play
end

Ruby将其转换为:

songList.each do |aSong|
  aSong.play
end

for循环和每个表单之间的唯一区别是正文中定义的局部变量的范围.这将在第87页讨论.

您可以使用for来遍历响应每个方法的任何对象,例如Array或Range.

for i in ['fee', 'fi', 'fo', 'fum']
  print i, " "
end
for i in 1..3
  print i, " "
end
for i in File.open("ordinal").find_all { |l| l =~ /d$/}
  print i.chomp, " "
end

生产:

fee fi fo fum 1 2 3 second third

只要您的类定义了合理的每个方法,您就可以使用for循环来遍历它.

class Periods
  def each
    yield "Classical"
    yield "Jazz"
    yield "Rock"
  end
end


periods = Periods.new
for genre in periods
  print genre, " "
end

生产:

Classical Jazz Rock

Ruby没有列表推导的其他关键字(就像你上面提到的总和例子). for不是一个非常受欢迎的关键字,方法syntax(arr.each {})通常是首选.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有