调用方法时的 Ruby 变量行为

基森格

我很擅长从谷歌那里得到答案,但我就是不明白。在下面的代码中,为什么在调用 'addup' 后变量 'b' 会发生变化?我想我明白为什么 'a' 会改变(虽然它有点模糊),但我想将原始数组 'a' 保存到 'b',在 'a' 上运行该方法,所以我有两个不同内容的数组。我究竟做错了什么?

提前致谢

def addup(arr)

  i=0
  while i< arr.length
    if arr[i]>3
      arr.delete_at(i)
    end
    i += 1
  end

  return arr

end

a = [1,2,3,4]
b = a

puts "a=#{a}"             # => [1,2,3,4]
puts "b=#{b}"             # => [1,2,3,4]
puts "addup=#{addup(a)}"  # => [1,2,3]
puts "a=#{a}"             # => [1,2,3]
puts "b=#{b}"             # => [1,2,3]
承担知识

二者ab保持在存储器中的相同的数组对象的引用。为了将原始数组保存在 中b,您需要复制该数组。

a = [1,2,3,4] # => [1, 2, 3, 4]
b = a         # => [1, 2, 3, 4]
c = a.dup     # => [1, 2, 3, 4]
a.push 5      # => [1, 2, 3, 4, 5]
a             # => [1, 2, 3, 4, 5]
b             # => [1, 2, 3, 4, 5]
c             # => [1, 2, 3, 4]

有关为什么会发生这种情况的更多信息,请阅读Ruby 是按引用传递还是按值传递?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ruby 在一行中单独分配变量时的奇怪行为

来自分类Dev

Ruby中奇怪的局部变量行为

来自分类Dev

给定块时Ruby Array#product方法的行为

来自分类Dev

Ruby:在方法中使用.send的行为与在外部调用它的行为不同

来自分类Dev

Ruby实例方法和变量

来自分类Dev

如何在Ruby中调用实例变量

来自分类Dev

在LowerCamelCase中命名变量时的奇怪行为

来自分类Dev

Ruby:从方法调用类实例时遇到麻烦

来自分类Dev

Ruby:从调用方法返回

来自分类Dev

Ruby芝麻方法调用

来自分类Dev

Ruby芝麻方法调用

来自分类Dev

指向方法的类变量的行为不同

来自分类Dev

Ruby-访问实例变量时出错

来自分类Dev

当调用该类的任何其他方法时,如何调用该类的方法(Ruby)

来自分类Dev

用\'X字符串替换时,奇怪的Ruby行为

来自分类Dev

使用套接字时Ruby脚本的异常行为

来自分类Dev

如何区分在隐式接收器上调用的方法和Ruby中的变量?

来自分类Dev

如何区分在隐式接收器上调用的方法和Ruby中的变量?

来自分类Dev

Ruby:定义实例变量的更短方法

来自分类Dev

Ruby动态创建方法和变量

来自分类Dev

Ruby方法如何发回不同数量的变量?

来自分类Dev

ruby类变量中访问方法的简写

来自分类Dev

Ruby的局部变量和方法

来自分类Dev

Ruby块方法中变量的使用

来自分类Dev

如何动态访问Ruby实例变量/方法?

来自分类Dev

Ruby Minitest:访问设置方法中的变量

来自分类Dev

Ruby - 对所有块变量应用方法

来自分类Dev

迭代方法调用的结果时,Parallel.Foreach的行为如何?

来自分类Dev

当在“ summary()”调用中“重用”变量时,dplyr与plyr summary()的不同行为

Related 相关文章

热门标签

归档