Ruby编程不同的遍历的方式

临风暖阳 发表于 2022/11/01 16:40:25 2022/11/01
【摘要】 笔者主要介绍Ruby编程的不同的遍历的方式
[1,2,3].each do |i|
  puts( i )
end
for s in ['one','two','three'] do
  puts( s )
end
['one','two','three'].each do |s|
  puts( s )
end
# --- Example 2 ---
# i) for
for x in [1, "two", [3,4,5] ] do puts( x ) end
# ii) each
[1, "two", [3,4,5] ].each do |x| puts( x ) end
for s in ['one','two','three']
  puts( s )
end
# But here it is required
for s in ['one','two','three'] do puts( s ) end
for s in 1..3
  puts( s )
end
# each
(1..3).each do |s|
  puts(s)
end
[[1,2,3],[3,4,5],[6,7,8]].each do
|a,b,c|
  puts( "#{a}, #{b}, #{c}" )
end
# curly brackets {..}
[[1,2,3],[3,4,5],[6,7,8]].each{
  |a,b,c|
  puts( "#{a}, #{b}, #{c}" )
}

1
2
3
one
two
three
one
two
three
1
two
3
4
5
1
two
3
4
5
one
two
three
one
two
three
1
2
3
1
2
3
1, 2, 3
3, 4, 5
6, 7, 8
1, 2, 3
3, 4, 5
6, 7, 8

0.upto(10) do
| i |
  puts( i )
end
10.downto(0) do
| i |
  puts( i )
end
# Here multiarr is an array containing two 'rows'
# (subarrays) at index 0 and 1
multiarr = [ ['one','two','three','four'],
             [1,2,3,4]
]
# This for loop runs twice (once for each 'row' of multiarr)
for (a,b,c,d) in multiarr
  print("a=#{a}, b=#{b}, c=#{c}, d=#{d}\n" )
end
multiarr.each do |a,b,c,d|
  print("a=#{a}, b=#{b}, c=#{c}, d=#{d}\n" )
end
multiarr.each{ |a,b,c,d|
  print("a=#{a}, b=#{b}, c=#{c}, d=#{d}\n" )
}

0
1
2
3
4
5
6
7
8
9
10
10
9
8
7
6
5
4
3
2
1
0
a=one, b=two, c=three, d=four
a=1, b=2, c=3, d=4
a=one, b=two, c=three, d=four
a=1, b=2, c=3, d=4
a=one, b=two, c=three, d=four
a=1, b=2, c=3, d=4

$hours_asleep = 0
def tired
  if $hours_asleep >= 8 then
    $hours_asleep = 0
    return false
  else
    $hours_asleep += 1
    return true
  end
end
def snore
  puts('snore....')
end
def sleep
  puts("z" * $hours_asleep )
end
while tired do sleep end # a single-line while loop
while tired # a multiline while loop
  sleep
end
sleep while tired # single-line while modifier
begin # multiline while modifier
  sleep
  snore
end while tired


z
zz
zzz
zzzz
zzzzz
zzzzzz
zzzzzzz
zzzzzzzz
z
zz
zzz
zzzz
zzzzz
zzzzzz
zzzzzzz
zzzzzzzz
z
zz
zzz
zzzz
zzzzz
zzzzzz
zzzzzzz
zzzzzzzz

snore....
z
snore....
zz
snore....
zzz
snore....
zzzz
snore....
zzzzz
snore....
zzzzzz
snore....
zzzzzzz
snore....
zzzzzzzz
snore....

开发环境:Rubymine

The book of Ruby----A hands-on guide for the Adventurous---[美]Huw Collingbourne---no starch press

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。