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

Ruby中的常量和变量有什??么区别?

发布时间:2020-12-17 02:56:52 所属栏目:百科 来源:网络整理
导读:所以,我正在为CodeAcademy做一个 Ruby课程,我一直在区分变量和类之间的区别.有人可以向我解释一下这个区别吗?我会给你饼干! ^^.无论我在哪里查看,我都找不到任何相关信息. 解决方法 Ruby中常量的概念是它们只能分配一次值,而您可以根据需要多次为变量赋值.
所以,我正在为CodeAcademy做一个 Ruby课程,我一直在区分变量和类之间的区别.有人可以向我解释一下这个区别吗?我会给你饼干! ^^.无论我在哪里查看,我都找不到任何相关信息.

解决方法

Ruby中常量的概念是它们只能分配一次值,而您可以根据需要多次为变量赋值.从技术上讲,您甚至可以为常量分配新值.但是Ruby会在这种情况下发出警告,你应该尽量避免这种情况.

我认为导致Ruby新手混淆的主要问题是,即使是在没有警告的情况下也可以修改分配给常量的值(例如,通过向数组添加新元素).常量引用与此处的变量没有区别,因为引用不限制可以对值执行的操作.变量或常量引用的对象始终独立于该变量.

在这个例子中,我为ARRAY常量分配了一个新数组.稍后,我可以通过添加一个新成员来愉快地更改数组.常数并不关心这一点.

ARRAY = []
# => []
ARRAY << :foo
ARRAY
# => [:foo]

禁止(或者,允许带警告)的唯一事情是,如果您尝试为常量分配一个全新的值:

ARRAY2 = []
# => []
ARRAY2 = [:bar]
# warning: already initialized constant ARRAY2
ARRAY2
=> [:bar]

因此,通常的做法是立即冻结分配给常量的值,以完全拒绝任何进一步的更改,并确保保留原始值(除非有人分配新值):

ARRAY3 = [:foo,:bar].freeze
ARRAY3 << :baz
# RuntimeError: can't modify frozen Array

(编辑:李大同)

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

    推荐文章
      热点阅读