Ruby中的布尔方法?

时间:2011-12-05 15:14:53

标签: ruby

为了问这样的话:

MyClass::create().empty?

如何在MyClass中设置empty

Empty(true / false)取决于类变量@arr是否为空。

4 个答案:

答案 0 :(得分:7)

问号实际上是方法名称的一部分,所以你会这样做:

class MyClass

  def empty?
    @arr.empty? # Implicitly returned.
  end

end

答案 1 :(得分:2)

与我在上一篇文章中显示的完全相同,但使用不同的方法名称。

首先,create必须使用empty?方法返回一些内容。例如:

class MyClass
  def self.create
    []
  end
end

如果您希望根据上一个问题对MyClass的实例进行操作:

class MyClass
  def self.create
    MyClass.new
  end

  def initialize
    @arr = []
  end

  def empty?
    @arr.empty?
  end

  def add x
    @arr << x
    self
  end
end

此处MyClass充当数组的简单包装器,提供add方法。

pry(main)> MyClass.create.empty?
=> true

答案 2 :(得分:2)

您可能还需要检查@arr是否为零。这取决于你的类定义为空。

def empty?
  !@arr || @arr.empty?
end

答案 3 :(得分:0)

您可以使用Forwardableempty?从您的班级委派给数组:

require "forwardable"
class MyClass
  extend Forwardable
  def_delegators :@arr, :empty?

  def initialize(arr)
    @arr = arr
  end
end

my_object = MyClass.new([])
my_object.empty? # => true