ruby基本类的问题

我也试了下该代码
对于3如果改成

[Copy to clipboard] [ - ]
谢谢zppro兄关注
继续测试

#######################
line1    #forum test

line2    class S

line3     def initialize( aName )

line4      @name = aName

line5     end

line5     @son = S.new( "son" )

line7     def son

line8      return @son

line9     end

line10    end  #end of class s

line11    s = S.new( "aNewS" )

line12    puts ( "#{s.son}" )

#######################
[ ruby -w test.rb ]
结果是[ warning: instance variable @son not initialized ]
@son代表实例变量,OK?
puts "#{s.son}" 为空,还是说明那个问题,s = S.new的时候并没有执行构造函数以外的代码。。。所以出现那警告。

[ 本帖最后由 blackanger 于 2007-8-22 13:21 编辑 ]
继续
################################
line1    #forum test

line2    class S

line3     def initialize( aName )

line4      @name = aName

line5     end

line6     def set_son=( bName)

line7     @son = S.new( bName )

line8     end

line9     def son

line10      return @son

line11     end

line12    end  #end of class s

line13    s = S.new( "aNewS" )

line14    s.son = s.set_son( "aInnerS" )

line15    puts ( "#{s.son}" )
################################
result is [test1.rb:30: undefined method `son=' for #<S:0x2940104 @name="aNewS", @son=#<S:0x29400c8 @name="aInnerS">> (NoMethodError) ]
说明@son已经构建了
哈哈,so glad to see Mr.Blackanger here again
我的功底不好,请教上面的[ son = ]方法该如何写?若传入string来构造

[ 本帖最后由 eqq2002 于 2007-8-22 13:25 编辑 ]
继续使用@@作为object variable
#####################################
line1    #forum test

line2    class S

line3     def initialize( aName )

line4      @name = aName

line5     end

line6     @@son = S.new( "objectVariable" )

line7     def return_object_variable

line8      return @@son

line9     end

line10    end  #end of class s

line11    s = S.new( "aNewS" )

line12    p(s.return_object_variable)

line13    puts ( "#{s.son}" )
#####################################
结果是[#<S:0x2940258 @name="objectVariable">]
   [test3.rb:28: undefined method `son' for #<S:0x294021c @name="aNewS"> (NoMethodError)]


[Copy to clipboard] [ - ]
本身你的
s.son = s.set_son( "aInnerS" )
写法就是错误的。建议看PR

[Copy to clipboard] [ - ]
再看个例子:

[Copy to clipboard] [ - ]