Project1

标题: if 的循環方法 [打印本页]

作者: sai90306    时间: 2012-4-21 14:45
标题: if 的循環方法
本帖最后由 sai90306 于 2012-4-21 14:53 编辑

請問如在腳本中進行if 的循環
例如

已知 a=5
if x>=0
b=a+1
if x>=1
b=a+2
if x>=2
b=a+3

當x=3的時候會執行a+1, a+2, a+3
當x=2的時候會執行a+1, a+2,
當x=1的時候會執行a+1

能夠將腳本"
if x>=0
b=a+1
if x>=1
b=a+2
if x>=2
b=a+3
"
用循環寫成精簡的一個 if句子 吗?

以下是我無腦想法...
a=5
i = 0..2 #這是不是錯了??
k=0
k=k+i

if x>= k
b=a+(1+k)



dsu_plus_rewardpost_czw
作者: kangxi0109    时间: 2012-4-21 15:33
  1. if x>=0
  2. b=a+1
  3. if x>=1
  4. b=a+2
  5. if x>=2
  6. b=a+3
复制代码
这个用 case 好一点吧?
  1. case x
  2. when 0
  3. b=a+1
  4. when 1
  5. b=a+2
  6. when 2
  7. b=a+3
  8. end
复制代码
如果用 if 的写法,应该是:
  1. if x>=0
  2.   b=a+1
  3. elsif x=1
  4.   b=a+2
  5. elsif x=2
  6.   b=a+3
  7. end
复制代码
至于
  1. i = 0..2
复制代码
这个,不能这样赋值的吧?应该用for的吧...
  1. for i in 0...2
复制代码
在F1基础篇关于循环的教程已经很详细了吧...
作者: Wind2010    时间: 2012-4-21 15:43
  1. (0..2).each{|i|if x>=i then b=a+i+1 end}
复制代码

作者: 吉井明久    时间: 2012-4-21 16:37

  1. for i in 0..2
  2.   if x>=i then b=a+i+1 end
  3. end
复制代码

作者: hys111111    时间: 2012-4-21 16:37
本帖最后由 hys111111 于 2012-4-21 16:43 编辑

注意,我看明白了。
写法应该这样:

  1. a = 5
  2. for i in 0..2
  3.   b=a+x+1 if x >= i
  4. end
复制代码
另外,for有循环的意思,
如果想在某个点循环结束,请在那个条件里面加“break”
作者: 吉井明久    时间: 2012-4-21 16:45
其实 i=0..2 这样赋值是可以的。0..2 是一个 Range 对象,像数组一样有迭代器。

但是楼主就暂时认为这是错误的吧,因为现在你理解起来比较困难,相比之下好好去看 for 的语法。




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