From 823441e43dd007d4e8931fb236ffbeada12eabd2 Mon Sep 17 00:00:00 2001 From: bnewbold Date: Wed, 14 Jan 2009 16:24:34 -0500 Subject: bunch of new --- software/ruby | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 software/ruby (limited to 'software/ruby') diff --git a/software/ruby b/software/ruby new file mode 100644 index 0000000..e64f73e --- /dev/null +++ b/software/ruby @@ -0,0 +1,67 @@ +================== +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. + +__ http://poignantguide.net/ + +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 ``nill`` 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 +>>> $~ # => # +>>> $~.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 -- cgit v1.2.3