Ruby 初学者关于嵌套类的问题 (附代码)

woz24416 · 2013年04月13日 · 最后由 woz24416 回复于 2013年04月13日 · 3039 次阅读

最近正在学习 ruby,关于嵌套类方面遇到一个问题,希望能够得到帮助:

class Drawing
  def Drawing.give_me_a_circle
    Circle.new(first_name)    Q1
  end

  class Line
  end

  class Circle
    def initialize(first_name)
      @first_name = first_name
    end

    def what_am_i(name)
      @last_name = name
      "Hi,#{@first_name} #{@last_name},This is a circle!"
    end
  end
end
#方法一:
a = Drawing.give_me_a_circle("Cameron")  #Q2
puts a.what_am_i("Anthony")

#方法二
b = Drawing::Circle.new ("Kevin")
puts b.what_am_i("Durante")

方法二正常显示没有问题,但在方法一中,在 Q1 和 Q2 处,无论删除掉哪个或者都存在,都不能正常显示。我的问题是:在嵌套类里面怎样使用 initialize 中的变量 (使用方法一的方式)?

非常感谢!

请先排版代码,看帮助。

已经找到问题了,之前只是在 Q 一和 Q 二把参数加上,无论加在哪处都会报:“undefined local variable or method `first_name' for Drawing:Class (NameError)” 或者"wrong number of arguments (0 for 1) (ArgumentError)"。后来想了想,在 def Drawing.give_me_a_circle(first_name) 也加上同名参数,这个问题就解决了。

抱歉,刚看到,首次发帖,今后一定注意。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册