相关疑难解决方法(0)

Ruby通过引用或值传递吗?

@user.update_languages(params[:language][:language1], 
                       params[:language][:language2], 
                       params[:language][:language3])
lang_errors = @user.errors
logger.debug "--------------------LANG_ERRORS----------101-------------" 
                + lang_errors.full_messages.inspect

if params[:user]
  @user.state = params[:user][:state]
  success = success & @user.save
end
logger.debug "--------------------LANG_ERRORS-------------102----------" 
                + lang_errors.full_messages.inspect

if lang_errors.full_messages.empty?
Run Code Online (Sandbox Code Playgroud)

@userobject会向方法中的lang_errors变量添加错误update_lanugages.当我对@user对象执行保存时,我丢失了最初存储在lang_errors变量中的错误.

虽然我试图做的更多是一个黑客(似乎没有工作).我想了解为什么变量值被淘汰了.我理解通过引用传递,所以我想知道如何在不被淘汰的情况下将该值保存在该变量中.

ruby ruby-on-rails pass-by-reference

245
推荐指数
8
解决办法
10万
查看次数

Ruby - 参考引用或值?

我不明白为什么他们 Ruby按值传递所有参数,同时下面的代码证明了相反的情况:

class MyClass1
  @var1 = 123

  def get1
    @var1
  end

  def set1=value
    @var1 = value
  end
end

c1 = MyClass1.new
c1.set1 = 444
p c1.get1 # 444

def test1 mc
  mc.set1 = 999
end

test1 c1
p c1.get1 # 999
Run Code Online (Sandbox Code Playgroud)

如果按价值计算,它会打印出来444,而不是999.

ruby

16
推荐指数
1
解决办法
1万
查看次数

标签 统计

ruby ×2

pass-by-reference ×1

ruby-on-rails ×1