Project1

标题: 有间隔的循环怎么写? [打印本页]

作者: stella    时间: 2014-7-18 14:32
标题: 有间隔的循环怎么写?
有专门的写法么?比如for i in 1..100  ,当中跳过i = 15,i = 16,i = 17,i = 40,i = 75,这些情况
作者: 恐惧剑刃    时间: 2014-7-18 15:02
就事论事
  1. a = [*1..100].find_all {|i| ![15, 16, 17, 40, 75].include?(i)}
  2. for i in a
  3. end
复制代码
  1. for i in 1..100
  2.   next if [15, 16, 17, 40, 75].include?(i)
  3. end
复制代码
使用 find_all或其他方法 找出符合要求的;
使用 next 跳过不符合要求的

至少我不知道有什么专门方法
作者: Mr.Jin    时间: 2014-7-18 15:05
手头没有电脑,用手机写个麻烦点的
不过万变不离其宗~
  1. a = -1
  2. b = []
  3. # 这里是1-100
  4. for i in 1..100
  5. a += 1
  6. b[a] = i
  7. end
  8. # 去掉15、16、17、40、75
  9. b.delete(15)
  10. b.delete(16)
  11. b.delete(17)
  12. b.delete(40)
  13. b.delete(75)
复制代码
然后再for i in b就行了…
作者: RyanBern    时间: 2014-7-18 15:42
  1. ((1..100).to_a - [15,16,17,40,75]).each{|i| ...}
复制代码
是这样吧?貌似比较占内存。
或者用while吧。
  1. i = 1
  2. while i <= 100
  3.   next if [15,16,17,40,75].include?(i)
  4. end
复制代码

作者: taroxd    时间: 2014-7-18 17:55
  1. (1..100).each do |i|
  2.   next if [15, 16, 17, 40, 75].include?(i)
  3.   #...
  4. end
复制代码

作者: kuerlulu    时间: 2014-7-18 17:59
100.times do |i|
  next if [15,16,17,40,75].include?(i-1)
end
作者: 573932914    时间: 2014-7-18 19:45
  1. for i in 1...100
  2. if i!=15 or 16 or 17 or 40 or 75
  3. 呵呵
  4. end
  5. end
复制代码

作者: chd114    时间: 2014-7-19 22:20
  1. for i in 0...3
  2. case i
  3. when i==0
  4.   p "[url=home.php?mod=space&uid=183272]@chd114[/url] "
  5. when i==1
  6.   p "[url=home.php?mod=space&uid=2630902]@楼主是我的女仆[/url] "
  7. when i==2
  8.   p "[url=home.php?mod=space&uid=317546]@美丽晨露[/url] "
  9. end
  10. end
复制代码
也是其中一种,根据自己需要选择这些方法中的其中一种




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1