ruby-on-rails
  • ruby
  • struct
  • 2016-02-18 55 views 1 likes 
    1

    我正在開發一個項目,並且發現了一個有趣的問題。我想使用Struct。我嘗試使用這樣的:Ruby Struct.new無法按預期工作,它需要額外的。新

    > e = Struct.new(:message, :whateve) 
    => #<Class:0x007f881dd98b98> 
    e.message = "something" 
    NoMethodError: undefined method `message=' for #<Class:0x007f881dd98b98> 
    from (pry):5:in `__pry__' 
    

    它工作正常,如果我補充這樣的:e = Struct.new(:message, :whateve).new所以我想知道是什麼問題,需要額外的新功能?我正在使用ruby 2.2.1p85。

    +1

    定義結構類型('MYSTRUCT = Struct.new')是不一樣的初始化它的一個實例('my_struct_obj = MYSTRUCT .new')。 –

    回答

    4

    它發生,因爲Struct.new(:message, :whateve)只定義一個新的類:

    e = Struct.new(:message, :whateve) # define new class 
    e.class 
    #=> Class 
    e.new #define this class instance 
    #=> #<struct message=nil, whateve=nil> 
    
    +0

    謝謝。是的我的壞,我試圖使用結構作爲一個對象,而不是創建對象的結構。 – JohnDel

    相關問題