设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1685|回复: 8
打印 上一主题 下一主题

[已经解决] 关于一个新手对脚本的错误认知

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2015-8-13
帖子
15
跳转到指定楼层
1
发表于 2016-2-8 21:49:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 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,请各位大大为我这个菜鸟,帮忙解答!!!

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2016-2-8 22:11:51 | 只看该作者
  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
复制代码
这样不好吗?

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2015-8-13
帖子
15
3
 楼主| 发表于 2016-2-8 22:16:25 | 只看该作者
chd114 发表于 2016-2-8 22:11
这样不好吗?

虽然少了一点东西,但是比我的脚本更简洁,果然我要学的还很多啊

点评

好像"print 'big'"并不能当条件用···  发表于 2016-2-8 22:19
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2015-8-13
帖子
15
4
 楼主| 发表于 2016-2-8 22:19:25 | 只看该作者
chd114 发表于 2016-2-8 22:11
这样不好吗?

不过我只是想不明白我哪里错了...如果方便的话,能告诉我错在哪儿吗?如果不方便,那还是要谢谢你
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3846
在线时间
1966 小时
注册时间
2013-1-3
帖子
9536
5
发表于 2016-2-9 16:32:46 | 只看该作者
没必要单独把下一段列出来,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
复制代码

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2015-8-13
帖子
15
6
 楼主| 发表于 2016-2-10 10:58:10 | 只看该作者
紫英晓狼1130 发表于 2016-2-9 16:32
没必要单独把下一段列出来,p出来的应该无法分歧,以下未测试…

谢谢,此脚本亲测可用,比我想象的还要好,多谢各位帮我解决难题
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2015-8-13
帖子
15
7
 楼主| 发表于 2016-2-10 11:08:56 | 只看该作者
本帖最后由 863009463 于 2016-2-10 11:11 编辑

谢谢,表示问题已解决
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

8
发表于 2016-2-10 13:36:28 | 只看该作者
上面两位已经基本把问题说清楚了。在这里我补充一下。
前面的那一块分歧没错。当然写法可以更简洁。
后面的那一块条件分歧,总落入第一个分歧的原因是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}"
回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2015-8-13
帖子
15
9
 楼主| 发表于 2016-2-10 19:56:20 | 只看该作者
RyanBern 发表于 2016-2-10 13:36
上面两位已经基本把问题说清楚了。在这里我补充一下。
前面的那一块分歧没错。当然写法可以更简洁。
后面的 ...

谢谢解答
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-22 17:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表