D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
alt
/
ruby34
/
share
/
ri
/
system
/
Data
/
Filename :
new-c.ri
back
Copy
U:RDoc::AnyMethod[iI"new:ETI"Data::new;TT:publico:RDoc::Markup::Document:@parts[o:RDoc::Markup::Paragraph; [I"OConstructors for classes defined with ::define accept both positional and ;TI"keyword arguments.;To:RDoc::Markup::BlankLine o:RDoc::Markup::Verbatim; [I"+Measure = Data.define(:amount, :unit) ;TI" ;TI"Measure.new(1, 'km') ;TI"-#=> #<data Measure amount=1, unit="km"> ;TI"(Measure.new(amount: 1, unit: 'km') ;TI"-#=> #<data Measure amount=1, unit="km"> ;TI" ;TI"2# Alternative shorter initialization with [] ;TI"Measure[1, 'km'] ;TI"-#=> #<data Measure amount=1, unit="km"> ;TI"$Measure[amount: 1, unit: 'km'] ;TI"-#=> #<data Measure amount=1, unit="km"> ;T:@format0o; ; [I"UAll arguments are mandatory (unlike Struct), and converted to keyword arguments:;T@o;; [ I"Measure.new(amount: 1) ;TI"?# in `initialize': missing keyword: :unit (ArgumentError) ;TI" ;TI"Measure.new(1) ;TI"?# in `initialize': missing keyword: :unit (ArgumentError) ;T; 0o; ; [ I"WNote that <tt>Measure#initialize</tt> always receives keyword arguments, and that ;TI"Pmandatory arguments are checked in +initialize+, not in +new+. This can be ;TI"Rimportant for redefining initialize in order to convert arguments or provide ;TI"defaults:;T@o;; [I".Measure = Data.define(:amount, :unit) do ;TI" NONE = Data.define ;TI" ;TI"/ def initialize(amount:, unit: NONE.new) ;TI"- super(amount: Float(amount), unit:) ;TI" end ;TI" end ;TI" ;TI"IMeasure.new('10', 'km') # => #<data Measure amount=10.0, unit="km"> ;TI"SMeasure.new(10_000) # => #<data Measure amount=10000.0, unit=#<data NONE>>;T; 0: @fileI" struct.c;T:0@omit_headings_from_table_of_contents_below0I"inew(*args) -> instance new(**kwargs) -> instance ::[](*args) -> instance ::[](**kwargs) -> instance ;T0[ I"(*args);T@:FI" Data;TcRDoc::NormalClass00