0

我今天遇到了一些有趣的 Ruby 代码

class MeetingReminderJob < Struct.new(:user, :meeting)
  def perform
    send_reminder(user, meeting)
  end
end

的目的是< Struct.new(:user, :meeting)什么?

4

2 回答 2

2

Struct 是一个 ruby​​ 类,它创建了一个包含属性和访问器的 Class 对象,您不需要显式定义一个类。在 api 中,您可以找到更多详细信息:http ://www.ruby-doc.org/core-1.9.3/Struct.html 。

在您的情况下,它创建一个包含 2 个名为“user”和“meeting”的属性的类,然后类 MeetingReminderJob 继承它。

于 2013-08-23T03:24:27.613 回答
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.
于 2013-08-23T04:08:58.300 回答