2016-11-22 120 views
0

我想创建一个paket_obj数组的模型。我的问题是为什么有2个而不是1个“paket_obj”类对象,为什么他们没有这个类的方法?为什么数组中的对象没有对象方法?

我想这样做,因为我想存储,创建,删除和操作paket_obj类在这个类中的对象。paket_modul类也用于测试目的。

这里是paket_modul类。什么也没有发生

class Paket_Modul 
#Import von Klassen 
require_relative 'paket_obj' 

attr_reader :arrayofpackages 

def initialize 
@arrayofpackages = [] 
@arrayofpackages << addnew_Paket 
end 


def addnew_Paket 
    #Paket wird mit einer ID initalisiert 
    newpaket = Paket_Obj.new(@arrayofpackages.last == nil ? 0 : @arrayofpackages.last.id_paket+1) 
    #Objekt von Typ Paket_Obj dem Array hinzufügen 
    @arrayofpackages << newpaket 
end 

def defineinformation_Paket(param,constantoption) 
    @arrayofpackages[param].AddConstant(constantoption) 
end 

#Why does object in array does not have the object methods? 
a = Paket_Modul.new 
for param in a.arrayofpackages 
    puts param 
end 

end 

的paket_obj类

class Paket_Obj 
attr_accessor :mobilnumber, :emailadresse, :name_ofcertPerson, :id_paket, :id_vorgang, :firma 


def initialize(id_paket, attributes = {}) 
@mobilnumber = attributes[:mobilnumber] 
@name_ofcertPerson = attributes[:name_ofcertPerson] 
@emailadresse = attributes[:emailadresse] 
@firma = attributes[:firmav] 
@id_paket = id_paket 
@id_vorgang = attributes[:id_vorgang] 
end 

def AddConstant(param) 
puts case param 
     when 0 
     @mobilnumber = '015224028625' 
     @name_ofcertPerson = 'Emil Klaus' 
     @emailadresse= '[email protected]' 
     @firma = 'ERTZ' 
     @id_vorgang = 0 
     when 1 
     @mobilnumber = '015758625623' 
     @name_ofcertPerson = 'Dirk Heisenberg' 
     @emailadresse= '[email protected]' 
     @firma = 'DFGHD' 
     @id_vorgang = 1 
    end 
end 
end 

回答

0

问题就解决了。这只是代码中的错误。

首先:

def initialize 
    @arrayofpackages = [] 
    #This here is wrong. I wanted to initialize the array with an object but forgot to return an object in the method addnew_Paket 
    #What i did was adding the reference of the method into the array 
    @arrayofpackages << addnew_Paket 
end 

做是正确的,我们必须这样做:

def initialize 
    @array_of_packages = Array.new 
    end 

    def add_new_paket 
    newpaket = PaketObj.new(@array_of_packages.last == nil ? 0 : (@array_of_packages.last.id_paket) + 1) 
    @array_of_packages << newpaket 
    end 
相关问题