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