Skip to content

Latest commit

 

History

History
154 lines (116 loc) · 2.87 KB

CLASS_README.md

File metadata and controls

154 lines (116 loc) · 2.87 KB

Class

#default_value

Adds a method that will return a default value

the value is evaluated on class definition, meaning that everytime it is called it will be the same instance

class MyClass
  default_value :name, 'John'
end

MyClass.new.name # returns 'John'
class MyClass
  default_value :name, 'John'
end

instance = MyClass.new
other = MyClass.new

instance.name.equal?('John')      # returns false
instance.name.equal?(other.name)  # returns true

#default_values

Adds methods that will return a default value

the value is evaluated on class definition, meaning that everytime any of them are called they will return the same instance of value

class MyClass
  default_values :name, :nick_name, 'John'
end

MyClass.new.name      # returns 'John'
MyClass.new.nick_name # returns 'John'
class MyClass
  default_values :name, :nick_name, 'John'
end

instance = MyClass.new
other = MyClass.new

instance.name.equal?('John')     # returns false
instance.name.equal?(other.name) # returns true
class MyClass
  default_values :name, :nick_name, 'John'
end

instance = MyClass.new

instance.nick_name.equal?('John')        # returns false
instance.nick_name.equal?(instance.name) # returns true

#default_reader

Creates a method that will act as reader, but will return a default value when the instance variable was never set

class Person
  attr_writer :name
  default_reader :name, 'John Doe'
end

model = Person.new

model.name # returns 'John Doe'
model = Person.new
model.name # returns 'John Doe'

model.name = 'Joe'
model.name # returns 'Joe'

model.name = nil
model.name # returns nil
model = Person.new
model.name # returns 'John Doe'

model.name = 'Bob'
model.name # returns 'Bob'
Person.new.name # returns 'John Doe'

#default_readers

Creates methods that will act as readers, but will return a default value when the instance variables ware never set

class Person
  attr_writer :cars, :houses
  default_reader :cars, :houses, 'none'
end

model = Person.new

model.cars # returns 'none'
model = Person.new
model.cars # returns 'none'

model.cars = ['volvo']
model.cars # returns ['volvo']

model.cars = nil
model.cars # returns nil
model = Person.new
model.cars # returns 'none'

model.cars = ['volvo']
model.cars # returns ['volvo']
Person.new.houses # returns 'none'
model.cars                           # returns 'none'
model.cars.equal?('none')            # returns false
model.nick_name.equal?(model.houses) # returns true

Added by Object

Added by Class