SORU
9 Aralık 2009, ÇARŞAMBA


Ruby değeri başvurusu ya da sınavı geçmek.

@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?

2* *nesne update_lanugages yöntemi lang_errors değişken hatalar ekler. ben bir tasarruf @user nesne üzerinde gerçekleştirmek için başlangıçta lang_errors değişken saklanan hataları kaybettim.

Yapmaya çalışıyorum ama bir hack daha çalışmak için görünmüyor). Değişken değerleri yıkanmış olduğunu anlamak istiyorum. Değeri yıkanmış olmadan bu değişken içinde tutulabilir bilmek istiyorum referans olarak geçmek anlıyorum.

CEVAP
9 Aralık 2009, ÇARŞAMBA


, Ruby is strictly pass-by-value geleneksel terminoloji. Ama burada sorduğun şey bu değil aslında.

Ruby, referans olmayan saf bir değeri herhangi bir kavram yok, kesinlikle bir yöntem için bir geçiş olamaz. Değişkenler her zaman nesnelere başvurular. Altından dışarı değiştirmek olmaz bir nesne elde etmek için, ya da, böylece kimse için bir başvuru içeren bir nesne vererek geçti sen nesne dup klon gerekir. (Hatta bu kurşun geçirmez değil ama standart klonlama yöntemleri de klon örnek değişkenleri hala orijinallerle aynı nesneleri işaret çok sığ bir kopyasını yapmak. Eğer nesneleri bugün ivan'ın tarafından başvurulan mutasyona varsa, o hala aynı nesneleri başvuran yana suret olarak gösterilir.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • SHAYTARDS

    SHAYTARDS

    1 EKİM 2008
  • TechSmartt

    TechSmartt

    29 Aralık 2010
  • vgeller1

    vgeller1

    22 Kasım 2009