software/ruby

Ruby

Note: this information is very rough, it's mostly my notes about what is

different about Ruby syntax compared to similar modern interpreted pan-paradigm languages like Python.

A unique intro to ruby is "Why's Poignant Guide to Ruby", a web-comic-y short free online book by why the luck stiff. The more serious reference is the "pickax" book.

Blocks

Blocks of code can be passed to functions, making ruby code more of a first order data type.

Ranges

2..7                # => 2..7
(2..7).to_a         # => [2, 3, 4, 5, 6, 7]
(2...7).to_a        # => [2, 3, 4, 5, 6]
('e'..'h').to_a     # => ["e", "f", "g", "h"]

Control Structures

Can use if after a statement:

a = c if c > b

Along with the usual break and next, there is redo which redoes the current loop (initial conditions may have been changed).

Boolean Operators

Anything that is not nil or false is true. To force interpretation as boolean, use !! (not not):

!!(nil)     # => false
!!(true)    # => true 
!!('')      # => true 
!!(0)       # => true 
!!({})      # => true 

Misc

Can use nasty Perl style regular expression stuff:

re1 = /\d+/
"There are 5 kilos of chunky bacon on the table!" =~ re1 # => 10, the index
$~ # =>         #<MatchData:0xb7c36754> 
$~.pre_hash     # => "There are "

Also $1, $2, etc.

The "splat operator", '*', either collects or expands extra arguments depending on syntax (I think this is kind of icky):

a, b = 1, 2, 3, 4       # a=1, b=2
a, *b = 1, 2, 3, 4      # a=1, b=[2,3,4] 
c, d = 5, [6, 7, 8]     # c=5, d=[6,7,8]
c, d = 5, *[6, 7, 8]    # c=5, b=6