Project1

标题: 关于一个新手对脚本的错误认知 [打印本页]

作者: 863009463    时间: 2016-2-8 21:49
标题: 关于一个新手对脚本的错误认知
本帖最后由 863009463 于 2016-2-8 21:55 编辑

x= rand(5)
y= rand(5)
if x>y
  print x
  print "big"
elsif x==y
  print x
  print "middle"
else
  print x
  print "small"
end

if "print 'big'"
  x +=1
  print "因为X大于Y,所以X需要加1,结果等于#{x}"
elsif "print 'middle'"
  x +=0
  print "因为X等于Y,所以X不变,结果等于#{x}"
else "print 'small''"
  x -=1
  print "因为X小于Y,所以X需要减1,结果等于#{x}"
end
exit


脚本虽然没错,但是我想要的效果没达到,无论试多少次,下面那块条件分歧都是X大于Y,请各位大大为我这个菜鸟,帮忙解答!!!
作者: chd114    时间: 2016-2-8 22:11
  1. x=rand(5);y=rand(5)
  2. if x>y
  3. x+=1
  4. print "因为X大于Y,所以X需要加1,结果等于#{x}"
  5. elsif x<y
  6. x -=1
  7. print "因为X小于Y,所以X需要减1,结果等于#{x}"
  8. else
  9. print "因为X等于Y,所以X不变,结果等于#{x}"
  10. end
复制代码
这样不好吗?
作者: 863009463    时间: 2016-2-8 22:16
chd114 发表于 2016-2-8 22:11
这样不好吗?

虽然少了一点东西,但是比我的脚本更简洁,果然我要学的还很多啊
作者: 863009463    时间: 2016-2-8 22:19
chd114 发表于 2016-2-8 22:11
这样不好吗?

不过我只是想不明白我哪里错了...如果方便的话,能告诉我错在哪儿吗?如果不方便,那还是要谢谢你
作者: 紫英晓狼1130    时间: 2016-2-9 16:32
没必要单独把下一段列出来,p出来的应该无法分歧,以下未测试…
  1. x= rand(5)
  2. y= rand(5)
  3. if x>y
  4.   print x
  5.   print "big"
  6.   x +=1
  7.   print "因为X大于Y,所以X需要加1,结果等于#{x}"
  8. elsif x==y
  9.   print x
  10.   print "middle"
  11.   print "因为X等于Y,所以X不变,结果等于#{x}"
  12. else
  13.   print x
  14.   print "small"
  15.   x -=1
  16.   print "因为X小于Y,所以X需要减1,结果等于#{x}"
  17. end
  18. exit
复制代码

作者: 863009463    时间: 2016-2-10 10:58
紫英晓狼1130 发表于 2016-2-9 16:32
没必要单独把下一段列出来,p出来的应该无法分歧,以下未测试…

谢谢,此脚本亲测可用,比我想象的还要好,多谢各位帮我解决难题
作者: 863009463    时间: 2016-2-10 11:08
本帖最后由 863009463 于 2016-2-10 11:11 编辑

谢谢,表示问题已解决
作者: RyanBern    时间: 2016-2-10 13:36
上面两位已经基本把问题说清楚了。在这里我补充一下。
前面的那一块分歧没错。当然写法可以更简洁。
后面的那一块条件分歧,总落入第一个分歧的原因是if后面的表达式返回了true
RUBY 代码复制
  1. if "print 'big'"

这句话if的后面是一个字符串,不是逻辑值。但是在Ruby中约定,除了false和nil以外的对象作条件时,都当作true处理。这也就是为什么你的分歧总落入第一块。

最后,补上一句简洁写法。

RUBY 代码复制
  1. x = rand(5); y = rand(5);
  2. print x > y ? "Big. Variable x should be x - 1, which is #{x -= 1}" :
  3.     x < y ? "Small. Variable x should be x + 1, which is #{x += 1}" :
  4.     "Equal. Variable x should remain itself, which is #{x}"

作者: 863009463    时间: 2016-2-10 19:56
RyanBern 发表于 2016-2-10 13:36
上面两位已经基本把问题说清楚了。在这里我补充一下。
前面的那一块分歧没错。当然写法可以更简洁。
后面的 ...

谢谢解答




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