Ruby Programming

This page contains some of my notes on Ruby programming... it is not intended as a 'Tutorial'
I have some scripts set up for easy command line testing, linked with Notepad++ like my regular tutorials... Get them here:

Bases

 Decimal 100 0d100 Hexadecimal 0x1FF Binary 0b10101010 Octal 0o1234567

Operators

 Operatior Description Example + Add a + b will give 30 − Subtract a - b will give -10 * Multiply a * b will give 200 / Divide b / a will give 2 % Modulus − Get Remainder b % a will give 0 ** Exponent − Power a**b will give 10 to the power 20 = Simple assignment operator, assigns values from right side operands to left side operand. c = a + b will assign the value of a + b into c += Add AND assignment operator, adds right operand to the left operand and assign the result to left operand. c += a is equivalent to c = c + a -= Subtract AND assignment operator, subtracts right operand from the left operand and assign the result to left operand. c -= a is equivalent to c = c - a *= Multiply AND assignment operator, multiplies right operand with the left operand and assign the result to left operand. c *= a is equivalent to c = c * a /= Divide AND assignment operator, divides left operand with the right operand and assign the result to left operand. c /= a is equivalent to c = c / a %= Modulus AND assignment operator, takes modulus using two operands and assign the result to left operand. c %= a is equivalent to c = c % a **= Exponent AND assignment operator, performs exponential (power) calculation on operators and assign value to the left operand. c **= a is equivalent to c = c ** a = Simple assignment operator, assigns values from right side operands to left side operand. c = a + b will assign the value of a + b into c += Add AND assignment operator, adds right operand to the left operand and assign the result to left operand. c += a is equivalent to c = c + a -= Subtract AND assignment operator, subtracts right operand from the left operand and assign the result to left operand. c -= a is equivalent to c = c - a == Checks if the value of two operands are equal or not, if yes then condition becomes true. (a == b) is not true. === Used to test equality within a when clause of a case statement. (1...10) === 5 returns true. != Checks if the value of two operands are equal or not, if values are not equal then condition becomes true. (a != b) is true. > Checks if the value of left operand is greater than the value of right operand, if yes then condition becomes true. (a > b) is not true. < Checks if the value of left operand is less than the value of right operand, if yes then condition becomes true. (a < b) is true. >= Checks if the value of left operand is greater than or equal to the value of right operand, if yes then condition becomes true. (a >= b) is not true. <= Checks if the value of left operand is less than or equal to the value of right operand, if yes then condition becomes true. (a <= b) is true. <=> Combined comparison operator. Returns 0 if first operand equals second, 1 if first operand is greater than the second and -1 if first operand is less than the second. (a <=> b) returns -1. .eql? True if the receiver and argument have both the same type and equal values. 1 == 1.0 returns true, but 1.eql?(1.0) is false. equal? True if the receiver and argument have the same object id. if aObj is duplicate of bObj then aObj == bObj is true, a.equal?bObj is false but a.equal?aObj is true. => Hashmap literal definition key1 => value1 & Binary AND Operator copies a bit to the result if it exists in both operands. (a & b) will give 12, which is 0000 1100 | Binary OR Operator copies a bit if it exists in either operand. (a | b) will give 61, which is 0011 1101 ^ Binary XOR Operator copies the bit if it is set in one operand but not both. (a ^ b) will give 49, which is 0011 0001 ~ Binary Ones Complement Operator is unary and has the effect of 'flipping' bits. (~a ) will give -61, which is 1100 0011 in 2's complement form due to a signed binary number. << Binary Left Shift Operator. The left operands value is moved left by the number of bits specified by the right operand. a << 2 will give 240, which is 1111 0000 >> Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand. a >> 2 will give 15, which is 0000 1111 ? : Conditional Expression If Condition is true ? Then value X : Otherwise value Y .. Creates a range from start point to end point inclusive. 1..10 Creates a range from 1 to 10 inclusive. ... Creates a range from start point to end point exclusive. 1...10 Creates a range from 1 to 9. =~ matches a String against a regular expression, returns the position/index if found else nil "Hello World" =~ /Wo/ !~ 'Does not contain "Hello World" !~ /Mo/

Notes

 Print Hello World puts "Hello World!" Print Character putc "!" String concatenation str = "Billy" + " Bob" Rem statement # puts "don't show this" Multiple commands on one line test ="hello"; puts test Comma in numbers 10,000 test =10_000;puts test Using Quotes in strings puts "Quote: \"!" puts %(Quote: "!) Get user input name=gets puts "Hello "+name Remove a newline name=gets.chomp Print variable puts "value = #{var}" puts "value = " + var v= var.to_s Loop for i in 0..5     puts i end Loop [1,2].each do |i|   puts i end Loop Break for i in 0..10     if i==5         break     end     puts i end Loop Next While i = 1 while i<=3 do   puts i; i+=1 end until begin i+=1 end until i>4 Break while i  = 0 while true do   puts i;   i+= 1   break if i>5 end If if var<3     puts "Low" elsif var<10     puts "Mid" else     puts "High" end If Not unless 2==1   puts 'Not True' end case case var when 1     puts "one" when 2..4     puts "2/3/4" else     puts "something" end function with arg def myfunc(param = "default",param2=123t) end myfunc(1,2) Return a value def test     return "Hello World" end def test2     "Goodbye cruel world" end   puts test puts test2 set multiple objects to the same object a=b=c create identifier as symbol object :name Run a program Load "File.rb" NULL / Empty object nil INC / DEC V+=1 V-=1 Convert object to string to_s convert integer to float convert string to integer 9 / 5.to_f "7".to_i New object A= MyObj.new Class definition class MyObj   def initialize(name)     @myname=name     puts "Created "+name   end end o = MyObj.new("Test") function of the class #in MyObj   def myname     return @myname   end puts "My Name is "+o.myname Local (instance var) @var Class Var (Shared across all instances of class) class MyObj   def initialize(name)     @@myname=name     puts "Created "+name   end   def name ;   return @@myname ;  end end o = MyObj.new("Test1") ; p = MyObj.new("Test2") puts o.name ; puts p.name Module (Prevents namespace clashes) module MyMod     MyVar="Test" end puts MyMod::MyVar Include file (for modules) require "/sources/mymod.rb" puts MyMod::MyVar Global var \$myglobal=1 Constant (upper case first letter Const=1 Current object self Random Psuedorandom rand srand File load File.open("testfile.txt") do |f|     lines=f.readlines     lines.each do |l|         puts l     end end Substring (mid) test="<<>>" puts test[3...8] puts test[-3,3] Length, Uppercase Lowercase puts test.length puts test.upcase puts test.downcase contains Instr puts test =~ /llo/ Multiline string definition str = <