我今天遇到了一些有趣的 Ruby 代码。
class MeetingReminderJob < Struct.new(:user, :meeting)
def perform
send_reminder(user, meeting)
end
end
的目的是< Struct.new(:user, :meeting)
什么?
我今天遇到了一些有趣的 Ruby 代码。
class MeetingReminderJob < Struct.new(:user, :meeting)
def perform
send_reminder(user, meeting)
end
end
的目的是< Struct.new(:user, :meeting)
什么?
Struct 是一个 ruby 类,它创建了一个包含属性和访问器的 Class 对象,您不需要显式定义一个类。在 api 中,您可以找到更多详细信息:http ://www.ruby-doc.org/core-1.9.3/Struct.html 。
在您的情况下,它创建一个包含 2 个名为“user”和“meeting”的属性的类,然后类 MeetingReminderJob 继承它。
这是另一个例子:
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.