我今天遇到some interesting Ruby code。
class MeetingReminderJob < Struct.new(:user, :meeting)
def perform
send_reminder(user, meeting)
end
end
< Struct.new(:user, :meeting)
的目的是什么?
答案 0 :(得分:2)
Struct是一个ruby类,它创建了一个包含属性和访问器的Class对象,您不需要显式定义类。在api中,您可以找到更多详细信息:http://www.ruby-doc.org/core-1.9.3/Struct.html。
在您的情况下,它创建一个包含2个名为“user”和“meeting”的属性的类,然后类MeetingReminderJob继承它。
答案 1 :(得分:1)
这是另一个例子:
class Animal
def greet
puts "Hi. I'm an animal"
end
end
def get_class
return Animal
end
class Dog < get_class
def warn
puts "Woof."
end
end
Dog.new.greet
Dog.new.warn
--output:--
Hi. I'm an animal
Woof.
另一个:
class Dog < Class.new { def greet; puts "Hi"; end }
def warn
puts "Woof."
end
end
Dog.new.greet
Dog.new.warn
--output:--
Hi
Woof.