SlideShare une entreprise Scribd logo
1  sur  4
Télécharger pour lire hors ligne
Keith Bennett : What I Love About Ruby

This page last changed on Sep 17, 2008 by kbennett.


What I Love About Ruby
Keith Bennett

kbennett .at. bbsinc .dot. biz




Simplicity of Creating Instance Variables with Accessors and Mutators in Ruby

class Y
  attr_accessor :a
end


...creates an instance variable a, and an accessor and mutator.


Concise Idiom for Conditional (and Lazy) Initialization

@var ||= some_expensive_initialization


...means if var is undefined, define it, and if nil, do the initialization.


Numeric Constants Thousands Separators Supported

irb(main):002:0> 1_000_000
=> 1000000
irb(main):003:0> 1_000_000.class
=> Fixnum


Actually, all underscores are stripped, even if they do not separate thousands.


Shell Integration

A shell command enclosed in backticks will be run, and the value returned by the backticked command
will be the text the command sent to stdout:

irb(main):008:0>         `mkdir a b c d`
=> ""
irb(main):009:0>         `touch b/foo d/foo`
=> ""
irb(main):010:0>         emptydirs = `find . -type d -empty`
=> "./an./cn"
irb(main):011:0>         puts emptydirs
./a
./c
=> nil



Logical Syntax:

1.upto(10) { |i| puts i }

(100..200).each { |n| puts n }




Document generated by Confluence on Sep 18, 2008 09:45                                          Page 1
vs., in Java, for the first example:

for (int i = 0; i <= 10; i++) {
  System.out.println(i) ;
}



Ability to Specify Arrays (and Hashes) as Literals

and the Ease of Iterating Over Them

irb(main):018:0> ['collie', 'labrador', 'husky'].each { |breed|
  puts "Hi, I'm a #{breed}, and I know how to bark."
}
Hi, I'm a collie, and I know how to bark.
Hi, I'm a labrador, and I know how to bark.
Hi, I'm a husky, and I know how to bark.
=> ["collie", "labrador", "husky"]


Also:

%w(collie labrador husky)


can be used to create the array instead of:

['collie', 'labrador', 'husky']


A Hash:



irb(main):063:0> favorites = { :fruit => :durian, :vegetable => :broccoli }
=> {:fruit=>:durian, :vegetable=>:broccoli}



Ranges

water_liquid_range = 32.0...212.0
=> 32.0...212.0
irb(main):010:0> water_liquid_range.include? 40
=> true
irb(main):011:0> water_liquid_range.include? -40
=> false


Note: Ranges are not arrays; any number n, not just integers, such that 32.0 <= n < 212.0, is included
in the range.


Converting Ranges to Arrays:



irb(main):043:0> ('m'..'q').to_a
=> ["m", "n", "o", "p", "q"]



Blocks Used to Automatically Close Resources

File.open 'x.txt', 'w' do |file|
  file << 'Hello, world'




Document generated by Confluence on Sep 18, 2008 09:45                                            Page 2
end


The file is automatically closed after the block completes. If no block is provided, then the open function
returns the file instance:

irb(main):001:0>   f = File.open 'x.txt', 'w'
=> #<File:x.txt>
irb(main):002:0>   f << "Pleaaase, delete me, let me go..."
=> #<File:x.txt>
irb(main):003:0>   f.close
=> nil
irb(main):004:0>   puts IO.read('x.txt')
Pleaaase, delete   me, let me go...
=> nil



Simple File Operations

file_as_lines_array = IO.readlines 'x.txt'
file_as_single_string = IO.read 'x.txt'



Clean and Simple Syntax

puts Array.instance_methods.sort



Regular Expressions

irb(main):027:0>   'ruby' =~ /ruby/
=> 0
irb(main):028:0>   'rubx' =~ /ruby/
=> nil
irb(main):029:0>   'ruby' =~ /Ruby/
=> nil
irb(main):030:0>   'ruby' =~ /Ruby/i
=> 0



Arrays:

irb(main):001:0> nums = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
irb(main):006:0> nums.include? 3
=> true
irb(main):004:0> nums.collect { |n| n * n }
=> [1, 4, 9, 16, 25]
irb(main):002:0> nums.reject { |n| n % 2 == 0}
=> [1, 3, 5]
irb(main):003:0> nums.inject { |sum,n| sum += n }
=> 15
irb(main):052:0* distances_in_miles = [10, 50]=> [10, 50]
irb(main):053:0> distances_in_km = distances_in_miles.map { |n| n * 9.0 / 5.0 }
=> [18.0, 90.0]irb(main):016:0* twos = (0..10).map { |n| n * 2 }
=> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
irb(main):017:0> fours = (0..5).map { |n| n * 4 }
=> [0, 4, 8, 12, 16, 20]
irb(main):018:0> twos - fours
=> [2, 6, 10, 14, 18]
irb(main):019:0> twos & fours


Document generated by Confluence on Sep 18, 2008 09:45                                                Page 3
=> [0, 4, 8, 12, 16, 20]
irb(main):020:0> fours * 2
=> [0, 4, 8, 12, 16, 20, 0, 4, 8, 12, 16, 20]
irb(main):021:0> twos + fours
=> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 0, 4, 8, 12, 16, 20]



Built-in String Operations

   •   Case Conversions, Capitalization
   •   Left, Right, Sub
   •   Strip, Justify, Center
   •   Search and Replace (gsub)
   •   Insert, Delete




Document generated by Confluence on Sep 18, 2008 09:45            Page 4

Contenu connexe

Tendances

mongodb-introduction
mongodb-introductionmongodb-introduction
mongodb-introductionTse-Ching Ho
 
はじめてのMongoDB
はじめてのMongoDBはじめてのMongoDB
はじめてのMongoDBTakahiro Inoue
 
20110514 mongo dbチューニング
20110514 mongo dbチューニング20110514 mongo dbチューニング
20110514 mongo dbチューニングYuichi Matsuo
 
Scala Days 2011 - Rogue: A Type-Safe DSL for MongoDB
Scala Days 2011 - Rogue: A Type-Safe DSL for MongoDBScala Days 2011 - Rogue: A Type-Safe DSL for MongoDB
Scala Days 2011 - Rogue: A Type-Safe DSL for MongoDBjorgeortiz85
 
20171014 tips for manipulating filesystem in julia
20171014 tips for manipulating filesystem in julia20171014 tips for manipulating filesystem in julia
20171014 tips for manipulating filesystem in julia岳華 杜
 
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlCukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlSkills Matter
 
[131]해커의 관점에서 바라보기
[131]해커의 관점에서 바라보기[131]해커의 관점에서 바라보기
[131]해커의 관점에서 바라보기NAVER D2
 
HadoopとMongoDBを活用したソーシャルアプリのログ解析
HadoopとMongoDBを活用したソーシャルアプリのログ解析HadoopとMongoDBを活用したソーシャルアプリのログ解析
HadoopとMongoDBを活用したソーシャルアプリのログ解析Takahiro Inoue
 
Introducing CakeEntity
Introducing CakeEntityIntroducing CakeEntity
Introducing CakeEntityBasuke Suzuki
 
Future of HTTP in CakePHP
Future of HTTP in CakePHPFuture of HTTP in CakePHP
Future of HTTP in CakePHPmarkstory
 
High performance GPU computing with Ruby RubyConf 2017
High performance GPU computing with Ruby  RubyConf 2017High performance GPU computing with Ruby  RubyConf 2017
High performance GPU computing with Ruby RubyConf 2017Prasun Anand
 

Tendances (13)

mongodb-introduction
mongodb-introductionmongodb-introduction
mongodb-introduction
 
はじめてのMongoDB
はじめてのMongoDBはじめてのMongoDB
はじめてのMongoDB
 
20110514 mongo dbチューニング
20110514 mongo dbチューニング20110514 mongo dbチューニング
20110514 mongo dbチューニング
 
Scala Days 2011 - Rogue: A Type-Safe DSL for MongoDB
Scala Days 2011 - Rogue: A Type-Safe DSL for MongoDBScala Days 2011 - Rogue: A Type-Safe DSL for MongoDB
Scala Days 2011 - Rogue: A Type-Safe DSL for MongoDB
 
20171014 tips for manipulating filesystem in julia
20171014 tips for manipulating filesystem in julia20171014 tips for manipulating filesystem in julia
20171014 tips for manipulating filesystem in julia
 
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlCukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberl
 
[131]해커의 관점에서 바라보기
[131]해커의 관점에서 바라보기[131]해커의 관점에서 바라보기
[131]해커의 관점에서 바라보기
 
HadoopとMongoDBを活用したソーシャルアプリのログ解析
HadoopとMongoDBを活用したソーシャルアプリのログ解析HadoopとMongoDBを活用したソーシャルアプリのログ解析
HadoopとMongoDBを活用したソーシャルアプリのログ解析
 
Undrop for InnoDB
Undrop for InnoDBUndrop for InnoDB
Undrop for InnoDB
 
Solr @ Etsy - Apache Lucene Eurocon
Solr @ Etsy - Apache Lucene EuroconSolr @ Etsy - Apache Lucene Eurocon
Solr @ Etsy - Apache Lucene Eurocon
 
Introducing CakeEntity
Introducing CakeEntityIntroducing CakeEntity
Introducing CakeEntity
 
Future of HTTP in CakePHP
Future of HTTP in CakePHPFuture of HTTP in CakePHP
Future of HTTP in CakePHP
 
High performance GPU computing with Ruby RubyConf 2017
High performance GPU computing with Ruby  RubyConf 2017High performance GPU computing with Ruby  RubyConf 2017
High performance GPU computing with Ruby RubyConf 2017
 

En vedette

En vedette (10)

Sport z punktu widzenia urzędu
Sport z punktu widzenia urzęduSport z punktu widzenia urzędu
Sport z punktu widzenia urzędu
 
Grazyna Kopinska - Zmiany W Prawie, A Efekty Monitoringu Stanowienia Prawa
Grazyna Kopinska - Zmiany W Prawie, A Efekty Monitoringu Stanowienia PrawaGrazyna Kopinska - Zmiany W Prawie, A Efekty Monitoringu Stanowienia Prawa
Grazyna Kopinska - Zmiany W Prawie, A Efekty Monitoringu Stanowienia Prawa
 
11. Huccet I Imaniye
11. Huccet I  Imaniye11. Huccet I  Imaniye
11. Huccet I Imaniye
 
Kur’An Nedir
Kur’An NedirKur’An Nedir
Kur’An Nedir
 
FOI Litigation in Bulgaria / Litygacje w zakresie prawa do informacji w Bułgarii
FOI Litigation in Bulgaria / Litygacje w zakresie prawa do informacji w BułgariiFOI Litigation in Bulgaria / Litygacje w zakresie prawa do informacji w Bułgarii
FOI Litigation in Bulgaria / Litygacje w zakresie prawa do informacji w Bułgarii
 
01 Emirdag Lahikasi Ii Ifademin Kisacik Bir Tetimmesi 307
01 Emirdag Lahikasi Ii   Ifademin Kisacik Bir Tetimmesi  30701 Emirdag Lahikasi Ii   Ifademin Kisacik Bir Tetimmesi  307
01 Emirdag Lahikasi Ii Ifademin Kisacik Bir Tetimmesi 307
 
Monitoring Krok Za Krokiem
Monitoring Krok Za KrokiemMonitoring Krok Za Krokiem
Monitoring Krok Za Krokiem
 
What is the Pre-Approved Program?
What is the Pre-Approved Program?What is the Pre-Approved Program?
What is the Pre-Approved Program?
 
Piri reis
Piri reisPiri reis
Piri reis
 
Monitoring funduszu korkowego w Zgierzu'12.
Monitoring funduszu korkowego w Zgierzu'12.Monitoring funduszu korkowego w Zgierzu'12.
Monitoring funduszu korkowego w Zgierzu'12.
 

Similaire à ruby

Why everyone like ruby
Why everyone like rubyWhy everyone like ruby
Why everyone like rubyIvan Grishaev
 
What I Love About Ruby
What I Love About RubyWhat I Love About Ruby
What I Love About RubyKeith Bennett
 
Kickin' Ass with Cache-Fu (without notes)
Kickin' Ass with Cache-Fu (without notes)Kickin' Ass with Cache-Fu (without notes)
Kickin' Ass with Cache-Fu (without notes)err
 
Variables, expressions, standard types
 Variables, expressions, standard types  Variables, expressions, standard types
Variables, expressions, standard types Rubizza
 
A Few of My Favorite (Python) Things
A Few of My Favorite (Python) ThingsA Few of My Favorite (Python) Things
A Few of My Favorite (Python) ThingsMichael Pirnat
 
All about Erubis (English)
All about Erubis (English)All about Erubis (English)
All about Erubis (English)kwatch
 
Ruby Language - A quick tour
Ruby Language - A quick tourRuby Language - A quick tour
Ruby Language - A quick touraztack
 
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...EnlightenmentProject
 
JRuby 9000 - Optimizing Above the JVM
JRuby 9000 - Optimizing Above the JVMJRuby 9000 - Optimizing Above the JVM
JRuby 9000 - Optimizing Above the JVMCharles Nutter
 
Hidden Gems in Swift
Hidden Gems in SwiftHidden Gems in Swift
Hidden Gems in SwiftNetguru
 
Memcached Presentation @757rb
Memcached Presentation @757rbMemcached Presentation @757rb
Memcached Presentation @757rbKen Collins
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to PythonUC San Diego
 
Minicurso Ruby e Rails
Minicurso Ruby e RailsMinicurso Ruby e Rails
Minicurso Ruby e RailsSEA Tecnologia
 
Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2Henry S
 
Big Data Everywhere Chicago: Unleash the Power of HBase Shell (Conversant)
Big Data Everywhere Chicago: Unleash the Power of HBase Shell (Conversant) Big Data Everywhere Chicago: Unleash the Power of HBase Shell (Conversant)
Big Data Everywhere Chicago: Unleash the Power of HBase Shell (Conversant) BigDataEverywhere
 
Ruby and Rails by Example (GeekCamp edition)
Ruby and Rails by Example (GeekCamp edition)Ruby and Rails by Example (GeekCamp edition)
Ruby and Rails by Example (GeekCamp edition)bryanbibat
 

Similaire à ruby (20)

Why everyone like ruby
Why everyone like rubyWhy everyone like ruby
Why everyone like ruby
 
What I Love About Ruby
What I Love About RubyWhat I Love About Ruby
What I Love About Ruby
 
Kickin' Ass with Cache-Fu (without notes)
Kickin' Ass with Cache-Fu (without notes)Kickin' Ass with Cache-Fu (without notes)
Kickin' Ass with Cache-Fu (without notes)
 
Variables, expressions, standard types
 Variables, expressions, standard types  Variables, expressions, standard types
Variables, expressions, standard types
 
Why learn Internals?
Why learn Internals?Why learn Internals?
Why learn Internals?
 
A Few of My Favorite (Python) Things
A Few of My Favorite (Python) ThingsA Few of My Favorite (Python) Things
A Few of My Favorite (Python) Things
 
All about Erubis (English)
All about Erubis (English)All about Erubis (English)
All about Erubis (English)
 
Ruby Language - A quick tour
Ruby Language - A quick tourRuby Language - A quick tour
Ruby Language - A quick tour
 
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
 
JRuby 9000 - Optimizing Above the JVM
JRuby 9000 - Optimizing Above the JVMJRuby 9000 - Optimizing Above the JVM
JRuby 9000 - Optimizing Above the JVM
 
Hidden Gems in Swift
Hidden Gems in SwiftHidden Gems in Swift
Hidden Gems in Swift
 
Memcached Presentation @757rb
Memcached Presentation @757rbMemcached Presentation @757rb
Memcached Presentation @757rb
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
 
Introduction to Ruby
Introduction to RubyIntroduction to Ruby
Introduction to Ruby
 
Minicurso Ruby e Rails
Minicurso Ruby e RailsMinicurso Ruby e Rails
Minicurso Ruby e Rails
 
Spl Not A Bridge Too Far phpNW09
Spl Not A Bridge Too Far phpNW09Spl Not A Bridge Too Far phpNW09
Spl Not A Bridge Too Far phpNW09
 
DataMapper
DataMapperDataMapper
DataMapper
 
Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2
 
Big Data Everywhere Chicago: Unleash the Power of HBase Shell (Conversant)
Big Data Everywhere Chicago: Unleash the Power of HBase Shell (Conversant) Big Data Everywhere Chicago: Unleash the Power of HBase Shell (Conversant)
Big Data Everywhere Chicago: Unleash the Power of HBase Shell (Conversant)
 
Ruby and Rails by Example (GeekCamp edition)
Ruby and Rails by Example (GeekCamp edition)Ruby and Rails by Example (GeekCamp edition)
Ruby and Rails by Example (GeekCamp edition)
 

Plus de mahersaif

مهارات قيادة فرق العمل
مهارات قيادة فرق العملمهارات قيادة فرق العمل
مهارات قيادة فرق العملmahersaif
 
The Professional in Human Resources (PHR®) certification is designed for the ...
The Professional in Human Resources (PHR®) certification is designed for the ...The Professional in Human Resources (PHR®) certification is designed for the ...
The Professional in Human Resources (PHR®) certification is designed for the ...mahersaif
 
الخرائط الذهنية
الخرائط الذهنيةالخرائط الذهنية
الخرائط الذهنيةmahersaif
 
اليوم السعيد
اليوم السعيداليوم السعيد
اليوم السعيدmahersaif
 
كيف تخطط لمستقبلك
كيف تخطط لمستقبلككيف تخطط لمستقبلك
كيف تخطط لمستقبلكmahersaif
 
دورتنا
دورتنادورتنا
دورتناmahersaif
 
Right Compensation Plan
Right Compensation PlanRight Compensation Plan
Right Compensation Planmahersaif
 

Plus de mahersaif (14)

مهارات قيادة فرق العمل
مهارات قيادة فرق العملمهارات قيادة فرق العمل
مهارات قيادة فرق العمل
 
PHR
PHRPHR
PHR
 
a course
a coursea course
a course
 
The Professional in Human Resources (PHR®) certification is designed for the ...
The Professional in Human Resources (PHR®) certification is designed for the ...The Professional in Human Resources (PHR®) certification is designed for the ...
The Professional in Human Resources (PHR®) certification is designed for the ...
 
الخرائط الذهنية
الخرائط الذهنيةالخرائط الذهنية
الخرائط الذهنية
 
اليوم السعيد
اليوم السعيداليوم السعيد
اليوم السعيد
 
كيف تخطط لمستقبلك
كيف تخطط لمستقبلككيف تخطط لمستقبلك
كيف تخطط لمستقبلك
 
دورتنا
دورتنادورتنا
دورتنا
 
Right Compensation Plan
Right Compensation PlanRight Compensation Plan
Right Compensation Plan
 
ruby
rubyruby
ruby
 
ruby
rubyruby
ruby
 
ruby
rubyruby
ruby
 
I Love Ruby
I Love RubyI Love Ruby
I Love Ruby
 
I Love Ruby
I Love RubyI Love Ruby
I Love Ruby
 

ruby

  • 1. Keith Bennett : What I Love About Ruby This page last changed on Sep 17, 2008 by kbennett. What I Love About Ruby Keith Bennett kbennett .at. bbsinc .dot. biz Simplicity of Creating Instance Variables with Accessors and Mutators in Ruby class Y attr_accessor :a end ...creates an instance variable a, and an accessor and mutator. Concise Idiom for Conditional (and Lazy) Initialization @var ||= some_expensive_initialization ...means if var is undefined, define it, and if nil, do the initialization. Numeric Constants Thousands Separators Supported irb(main):002:0> 1_000_000 => 1000000 irb(main):003:0> 1_000_000.class => Fixnum Actually, all underscores are stripped, even if they do not separate thousands. Shell Integration A shell command enclosed in backticks will be run, and the value returned by the backticked command will be the text the command sent to stdout: irb(main):008:0> `mkdir a b c d` => "" irb(main):009:0> `touch b/foo d/foo` => "" irb(main):010:0> emptydirs = `find . -type d -empty` => "./an./cn" irb(main):011:0> puts emptydirs ./a ./c => nil Logical Syntax: 1.upto(10) { |i| puts i } (100..200).each { |n| puts n } Document generated by Confluence on Sep 18, 2008 09:45 Page 1
  • 2. vs., in Java, for the first example: for (int i = 0; i <= 10; i++) { System.out.println(i) ; } Ability to Specify Arrays (and Hashes) as Literals and the Ease of Iterating Over Them irb(main):018:0> ['collie', 'labrador', 'husky'].each { |breed| puts "Hi, I'm a #{breed}, and I know how to bark." } Hi, I'm a collie, and I know how to bark. Hi, I'm a labrador, and I know how to bark. Hi, I'm a husky, and I know how to bark. => ["collie", "labrador", "husky"] Also: %w(collie labrador husky) can be used to create the array instead of: ['collie', 'labrador', 'husky'] A Hash: irb(main):063:0> favorites = { :fruit => :durian, :vegetable => :broccoli } => {:fruit=>:durian, :vegetable=>:broccoli} Ranges water_liquid_range = 32.0...212.0 => 32.0...212.0 irb(main):010:0> water_liquid_range.include? 40 => true irb(main):011:0> water_liquid_range.include? -40 => false Note: Ranges are not arrays; any number n, not just integers, such that 32.0 <= n < 212.0, is included in the range. Converting Ranges to Arrays: irb(main):043:0> ('m'..'q').to_a => ["m", "n", "o", "p", "q"] Blocks Used to Automatically Close Resources File.open 'x.txt', 'w' do |file| file << 'Hello, world' Document generated by Confluence on Sep 18, 2008 09:45 Page 2
  • 3. end The file is automatically closed after the block completes. If no block is provided, then the open function returns the file instance: irb(main):001:0> f = File.open 'x.txt', 'w' => #<File:x.txt> irb(main):002:0> f << "Pleaaase, delete me, let me go..." => #<File:x.txt> irb(main):003:0> f.close => nil irb(main):004:0> puts IO.read('x.txt') Pleaaase, delete me, let me go... => nil Simple File Operations file_as_lines_array = IO.readlines 'x.txt' file_as_single_string = IO.read 'x.txt' Clean and Simple Syntax puts Array.instance_methods.sort Regular Expressions irb(main):027:0> 'ruby' =~ /ruby/ => 0 irb(main):028:0> 'rubx' =~ /ruby/ => nil irb(main):029:0> 'ruby' =~ /Ruby/ => nil irb(main):030:0> 'ruby' =~ /Ruby/i => 0 Arrays: irb(main):001:0> nums = [1,2,3,4,5] => [1, 2, 3, 4, 5] irb(main):006:0> nums.include? 3 => true irb(main):004:0> nums.collect { |n| n * n } => [1, 4, 9, 16, 25] irb(main):002:0> nums.reject { |n| n % 2 == 0} => [1, 3, 5] irb(main):003:0> nums.inject { |sum,n| sum += n } => 15 irb(main):052:0* distances_in_miles = [10, 50]=> [10, 50] irb(main):053:0> distances_in_km = distances_in_miles.map { |n| n * 9.0 / 5.0 } => [18.0, 90.0]irb(main):016:0* twos = (0..10).map { |n| n * 2 } => [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20] irb(main):017:0> fours = (0..5).map { |n| n * 4 } => [0, 4, 8, 12, 16, 20] irb(main):018:0> twos - fours => [2, 6, 10, 14, 18] irb(main):019:0> twos & fours Document generated by Confluence on Sep 18, 2008 09:45 Page 3
  • 4. => [0, 4, 8, 12, 16, 20] irb(main):020:0> fours * 2 => [0, 4, 8, 12, 16, 20, 0, 4, 8, 12, 16, 20] irb(main):021:0> twos + fours => [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 0, 4, 8, 12, 16, 20] Built-in String Operations • Case Conversions, Capitalization • Left, Right, Sub • Strip, Justify, Center • Search and Replace (gsub) • Insert, Delete Document generated by Confluence on Sep 18, 2008 09:45 Page 4