以下代码中的:: Schedule.new会做什么?是不是错过了::?
前面的东西 module Schedulable
attr_writer :schedule
def schedule
@schedule ||= ::Schedule.new
end
def schedulable?(start_date, end_date)
!scheduled?(start_date - lead_days, end_date)
end
..
end
答案 0 :(得分:1)
没有。
如果你没有在::
前面放任何东西 - 它只是向口译员说要使用全球范围。
即查看对象层次结构的顶层,并在那里查找Schedule
类。
答案 1 :(得分:0)
它创建了一个Schedule类的新实例(需要定义),但仅限于尚未定义@schedule。因此在它面前“或等于”。
这是一个简单的测试:
irb(main):013:0> schedule
=> #<Schedule:0x3b9ccf62> // new Schedule instance
irb(main):014:0> @schedule
=> #<Schedule:0x3b9ccf62> // same Schedule instance
irb(main):015:0> @schedule = "foooo" // new value for @schedule
=> "foooo"
irb(main):016:0> schedule // now method returns new value and no new instance of Schedule
=> "foooo"