为了问这样的话:
MyClass::create().empty?
如何在MyClass中设置empty
?
Empty(true / false)取决于类变量@arr
是否为空。
答案 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)
您可以使用Forwardable
将empty?
从您的班级委派给数组:
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