加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby如何跟踪变量

发布时间:2020-12-16 20:59:46 所属栏目:百科 来源:网络整理
导读:参见英文答案 Confusion with the assignment operation inside a falsy `if` block 3个 我对Ruby跟踪变量的方式感到困惑.例如: 情况1: if true a end 会给你一个错误说明未定义的局部变量或方法a. 案例2: if false a end a 会给你同样的第二个a的错误,而
参见英文答案 > Confusion with the assignment operation inside a falsy `if` block 3个
我对Ruby跟踪变量的方式感到困惑.例如:

情况1:

if true
       a
    end

会给你一个错误说明未定义的局部变量或方法a.

案例2:

if false
      a
    end
    a

会给你同样的第二个a的错误,而不是第一个a.

案例3:

if false
      a=2
    end
    a  #=> nil
    defined? a  #=> 'local-variable'

如果比较案例2和案例3,则在案例2中它首先忽略错误a.我认为它因为ruby的执行路径没有达到变量a由于条件错误.当我在第3种情况下进行赋值时,它也是一样的.它给了我一个已定义但变量为nil的变量.有人可以解释它的工作方式吗?

解决方法

在解析时,如果Ruby发现任何赋值如a = 2,则在那一刻创建局部变量.如果你放入任何错误的条件表达式内部并不重要.否则,如果在使用赋值(=)运算符创建之前尝试使用诸如此处的变量,则会将合法错误作为未定义的局部变量或方法a抛出.

Confusion with the assignment operation inside the fallacy if block

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读