I would like to have a class and some attributes which you can either set during initialization or use its default value.
class Fruit attr_accessor :color, :type def initialize(color, type) @color=color ||= 'green' @type=type ||='pear' end end apple=Fruit.new(red, apple)
The initialize method is useful when we want to initialize some class variables at the time of object creation. The initialize method is part of the object-creation process in Ruby and it allows us to set the initial values for an object.
The syntax for declaring parameters with default values In order to define a default value for a parameter, we use the equal sign (=) and specify a value to which a local variable inside the method should reference.
Definition of initialize transitive verb. : to set (something, such as a computer program counter) to a starting position, value, or configuration.
The typical way to solve this problem is with a hash that has a default value. Ruby has a nice syntax for passing hash values, if the hash is the last parameter to a method.
class Fruit attr_accessor :color, :type def initialize(params = {}) @color = params.fetch(:color, 'green') @type = params.fetch(:type, 'pear') end def to_s "#{color} #{type}" end end puts(Fruit.new) # prints: green pear puts(Fruit.new(:color => 'red', :type => 'grape')) # prints: red grape puts(Fruit.new(:type => 'pomegranate')) # prints: green pomegranate
A good overview is here: http://deepfall.blogspot.com/2008/08/named-parameters-in-ruby.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With