我正在尝试使用 ruby 中的输出参数创建一个方法。
我在这里和这里阅读了关于红宝石是否按值或按引用传递其参数的讨论的不同帖子和
我理解严格来说,Ruby 总是按值传递,但传递的值实际上是一个引用。为什么会有这么多争论的原因。
我发现有几种方法可以更改引用变量的值。例如,当它是一个数组、一个哈希或一个字符串时使用替换方法,或者合并!当它是一个哈希。
我发现使用integer,我可以在我的方法之外更改和传递值,而无需使用任何特殊方法。
我的问题是关于其他对象。例如,我想检索对象的“id”属性,以及对象引用本身:
class RestaurantController < ApplicationController
def pizza_to_deliver(pizza_name, id_of_the_order, pizza)
# pizza to eat
pizza = Pizza.where(:name => pizza_name).first
# unknown pizza
return false if pizza.nil?
# first customer order about this pizza
id_of_the_order = Orders.where(:pizza_id => pizza.id).first
true
end
end
my_pizza_name = 'margerita'
My_order_id = nil
my_pizza = nil
my_restaurant = RestaurantController.new
if my_restauant.pizza_to_deliver(my_pizza_name, My_order_id, my_pizza) then
puts "Pizza to deliver : #{my_order_id}"
rex_dog.eat(my_pizza)
end
如何使这个工作?(order_id 和 my_pizza 保持为零)