Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 需要获得所有者';第一个卸下的手提箱的名字是什么_Ruby - Fatal编程技术网

Ruby 需要获得所有者';第一个卸下的手提箱的名字是什么

Ruby 需要获得所有者';第一个卸下的手提箱的名字是什么,ruby,Ruby,我想知道当对CargoHold对象调用方法take\u from\u plane时,我需要做什么才能使下面的程序给我第一个卸载的行李箱的所有者姓名。我在行李箱类中创建了一个say\u owner\u name方法,但在这种情况下,我不知道如何在行李箱和货舱之间建立连接 module Stacklike def stack @stack ||= [] end def add_to_stack(obj) stack.push(obj) end def take_f

我想知道当对
CargoHold
对象调用方法
take\u from\u plane
时,我需要做什么才能使下面的程序给我第一个卸载的行李箱的所有者姓名。我在
行李箱
类中创建了一个
say\u owner\u name
方法,但在这种情况下,我不知道如何在
行李箱
货舱
之间建立连接

module Stacklike
  def stack
    @stack ||= []
  end
  def add_to_stack(obj)
    stack.push(obj)
  end
  def take_from_stack
    stack.pop
  end
end

class Suitcase 
  include Stacklike
  attr_accessor :name
  def initialize(person)
    self.name = person
    puts "#{person}'s suitcase"
  end
  def say_owner_name
    print name
  end
end

class CargoHold 
  include Stacklike
  def load_and_report(obj)
    print "Loading..."
    puts obj.object_id
    add_to_stack(obj)
  end
  def take_from_plane
    take_from_stack
  end
end

ch = CargoHold.new
s1 = Suitcase.new("Caio")
s2 = Suitcase.new("John")
s3 = Suitcase.new("Jack")

ch.load_and_report(s1)
ch.load_and_report(s2)
ch.load_and_report(s3)

first_unload = ch.take_from_plane
puts "The first suitcase to be unloaded is #{first_unload.object_id}." 

一切看起来都是正确的-如果你只是
把第一个卸载放在第一个卸载位置。说“所有者名称”
,你应该得到
“杰克”
。啊,但是,除了在
中说“所有者名称”
,你可能还想返回它<代码>定义说出所有者名称;打印名称;名称结束哦,等等-我再次阅读了你的问题-你想在删除该人时返回该人的姓名,例如在
从\u平面()获取\u方法中?首先,不一定。但既然你提到了,我该怎么做呢?哦,顺便说一句,非常感谢您的支持:)@CarySwoveland请将此评论作为答案发布,因为它似乎对OP有所帮助。