查看: 3021|回复: 13

[已经解决] 请问有没有办法让没有创建的变量在判断 != nil时返回false?

[复制链接]
梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
回帖
659

开拓者

发表于 2018-5-6 16:32:25 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 jianyulei 于 2018-5-6 16:37 编辑

例如变量aaa的赋值我写在分歧里面,之后我若要使用aaa就需要事先判断aaa是否在分歧中被赋值,但是当我判断aaa != nil 时会发生报错,但是判断aaa==nil 却正常,最奇怪的是我事先aaa=nil后却可以判断aaa != nil,请问有没有办法让我使用 != nil 来判断变量是否存在时如果没有创建该变量则直接返回false呢?
梦石
0
星屑
34460
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2018-5-6 17:53:51 | 显示全部楼层
用类变量,直接 if @aaa

点评

原来是这样啊,那尽可能的多用类变量好了  发表于 2018-5-7 00:43
你用局部变量,未赋值的话,会首先默认是一个函数来运行它。然而这个函数根本没有,就报找不到 method 的错误。  发表于 2018-5-6 20:29
习惯的问题吧,局部变量的话不需要手动清空,也不需要担心重复……  发表于 2018-5-6 19:34

评分

参与人数 1赞 +1 收起 理由
jianyulei + 1 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2018-5-6 18:14:25 | 显示全部楼层
aaa 是局部变量,你没赋值它不是肯定不存在吗……

点评

我就是想要用分歧判断他不存在,aaa != nil 理所当然应该返回false才对,但是报错我不就不能接着写下去了吗  发表于 2018-5-6 19:27
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2018-5-6 20:30:18 | 显示全部楼层
但是你的写法也并不能用来判断 aaa 不存在啊
像下面这段代码,aaa 虽然不存在,但是 aaa != nil
  1. def aaa
  2. 123
  3. end
  4. aaa != nil #=> true
复制代码

点评

我想我自己都弄混了,其实我只是想知道如何去判断一个变量是否已经被创建。  发表于 2018-5-6 20:55

评分

参与人数 1赞 +1 收起 理由
0newing + 1 我很赞同

查看全部评分

回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2018-5-6 20:43:30 | 显示全部楼层
更简单粗暴的一件事是:
即使你的aaa 没有写在条件分歧里,因为 aaa 是局部变量,即使它们在同一个事件页,只要不在一个指令中你也是获取不到 aaa 的,因为执行完指令后上一个指令的 aaa 已经不存在了
无标题.png
另外你题目描述里的“aaa没赋值,aaa == nil是正常的”这句话同样也是错误的,只要 aaa 没赋值,不管你判断 aaa != nil 还是 aaa == nil 都是会报错的

点评

真的可以,这怎么说,汗("▔㉨▔)汗   发表于 2018-5-6 21:21
这样可以?  发表于 2018-5-6 21:20
我试了下,原来是只有aaa = 0 if aaa == nil 可以用  发表于 2018-5-6 20:49

评分

参与人数 2星屑 +50 赞 +1 收起 理由
VIPArcher + 50 我很赞同
jianyulei + 1 精品文章

查看全部评分

回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2018-5-6 20:55:04 | 显示全部楼层
本帖最后由 soulsaga 于 2018-5-6 20:58 编辑

respond_to?
这个语句有什么用?
这样?if respond_to?("aaa")

评分

参与人数 1赞 +1 收起 理由
jianyulei + 1 我很赞同

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部