【发布时间】:2018-11-25 14:41:57
【问题描述】:
刚开始学习Ruby,遇到了这2个函数:
def increase(n)
n = n + 1
return n
end
def add_element(array, item)
array << item
end
当我尝试用 n = 5 增加(n)时
c = 5
p10.increase(c)
print("c is #{c}\n")
print("c.class is #{c.class}\n")
--> c is 5
--> c.class is Fixnum
c的值在increase(n)中增加后不变
当我尝试使用 add_element 更改数组 arr = [1,2,3,4] 的内容时,arr 确实发生了变化。
arr = [1, 2, 3, 4]
p10.add_element(arr, 5)
print("array is #{arr}\n")
--> array is [1, 2, 3, 4, 5]
那么如果 Ruby 中的一切都是对象,为什么 arr 会改变它的值,而 c(一个 Fixnum 对象)却不会改变它的值呢?
感谢您的想法。 :) 谢谢
【问题讨论】:
-
并非所有对象都是可变的。正如你所发现的,数字不是。如果是,
1+2的结果可能是任何东西。 -
参见此处:stackoverflow.com/questions/28083650/… 和警告:常量 ::Fixnum 已弃用:stackoverflow.com/a/21411269/5239030
-
什么是
p10? .
标签: ruby object addition fixnum