Bool Attribute Accessors in RubyMotion
Boon aka Hwee-Boon Yar
February 28, 2014
This is probably obvious to Ruby developers, but for us Objective C developers who are new to RubyMotion, I've found it common enough to define accessors for bools.
Bool accessors end with a question mark (?), so normally you do this:
class SomeClass attr_accessor :friendly
def friendly? friendly end end
or
class SomeClass attr_accessor :friendly alias_method :friendly?, :friendly end
but with a little DSL:
class Class def bool_attr_accessor(*my_accessors) my_accessors.each do |accessor| define_method(("#{accessor}?").to_sym) do !!instance_variable_get("@#{accessor}") end
define_method("#{accessor}=") do |accessor_value|
instance_variable_set("@#{accessor}", accessor_value)
end
end
end end
You can do this instead:
class SomeClass bool_attr_accessor :friendly end
Discussion in the ATmosphere