laohuanggua 发表于 2011-09-06 20:50

ruby中试图输出直接输出实例变量的值报错了

RT!

#!/usr/bin/ruby
#
class Dog
    def set_aname(aName)
      @name=aName
    end

    def get_name
      return @name
    end
end
adog=Dog.new
adog.set_aname("dahuang")
puts adog.name
#puts adog.get_name
#END


报错
5.rb:14: undefined method `name' for #<Dog:0xb7773870 @name="dahuang"> (NoMethodError)

必须用下面那句puts adog.get_name才行!!求解释。谢谢!

laohuanggua 发表于 2011-09-06 21:08

还要请教一个为什么输出nil的例子


#!/usr/bin/ruby
#
#
class Treasure
def initialize(aName,aDesc)
    @name=aName
    @desc=aDesc
end
def hello
    puts(@name +" "+@desc)
end

end

tt=Treasure.new('wang hui','test string')
#tt.initialize('wang hui','test string')
puts tt.hello
#end


结果是
wang hui test string
nil
为什么最后输出一个nil???

zhlong8 发表于 2011-09-06 23:00

第一个:你想要的是 attr_accessor 的魔法吧,否则你根本都没定义 .name 方法怎么调用

第二个: puts 的副作用是打印输出,返回值是 nil。C 里面的 printf 还有返回值呢不是
页: [1]
查看完整版本: ruby中试图输出直接输出实例变量的值报错了