Ruby Fixnum对象在增加后不会更改值
我刚开始学习Ruby,遇到了以下两个函数:Ruby Fixnum对象在增加后不会更改值,ruby,object,addition,fixnum,Ruby,Object,Addition,Fixnum,我刚开始学习Ruby,遇到了以下两个函数: def increase(n) n = n + 1 return n end def add_element(array, item) array << item end c值在增量(n)内增加后不变 当我试图用add_元素更改数组arr=[1,2,3,4]的内容时,arr确实发生了变化 arr = [1, 2, 3, 4] p10.add_element(arr, 5) print("array is #{ar
def increase(n)
n = n + 1
return n
end
def add_element(array, item)
array << item
end
c值在增量(n)内增加后不变
当我试图用add_元素更改数组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中的所有东西都是object,为什么arr会改变它的值,而c(Fixnum对象)不会改变它的值呢
感谢您的想法。:)谢谢Ruby中有一些“特殊”对象是不可变的Fixnum
就是其中之一(其他的是布尔型,nil
,符号,其他数字)。Ruby也是按值传递的
n=n+1
不修改n
,它在的范围内重新分配局部变量。
由于Fixnum
是不可变的,因此没有任何方法可以用来更改其值,不像数组可以用多种方法进行变异,Ruby中有一些“特殊”对象是不可变的Fixnum
就是其中之一(其他的是布尔型,nil
,符号,其他数字)。Ruby也是按值传递的
n=n+1
不修改n
,它在的范围内重新分配局部变量。
由于Fixnum
是不可变的,因此没有任何方法可以用来更改其值,不像数组可以使用多个方法进行变异,并非所有对象都是可变的。正如你所发现的,数字不是。如果是,则1+2
的结果可能是任何结果。请参见此处:警告:constant::Fixnum已被弃用:什么是p10
。并非所有对象都是可变的。正如你所发现的,数字不是。如果是,则1+2
的结果可能是任何结果。请参见此处:警告:constant::Fixnum已被弃用:什么是p10
。
arr = [1, 2, 3, 4]
p10.add_element(arr, 5)
print("array is #{arr}\n")
--> array is [1, 2, 3, 4, 5]
array = array + [item]