Ruby
Ruby is a true object oriented programming language.
Ruby is a server-side scripting language similar to Python and PERL.
Ruby can be embedded into HTML.
All ruby files will have extension .rb
#!/usr/bin/ruby -w print <<EOF This is the first way of creating here document ie. multiple line string. EOF
print <<"EOF"; # same as above This is the second way of creating here document ie. multiple line string. EOF
print << `EOC` # execute commands echo hi there echo lo there EOC
print << "foo", <<"bar" # you can stack them I said foo. foo I said bar. bar
<< can special a string or an identifier to terminate the string literal, and all lines following the current line up to the terminator are the value of the string. Example:
Begin {
} #decalres code to be called before the program is run
End {} #decalres code to be called after the program is run.
Commit:
single Line: #
multi line: =begin =end
Class and object:
class: class Customer end
Instance variables: using @ prefix the variable name
Class Variables: Class variables are available across different objects. A
using @@ prefix with the clas name
Global Variables: $
Example:
class Customer @@no_of_customers =0 end
Creating objects using new method
cust1 = Customer. new
cust2 = Customer. new
def:
define a method: followed by the name of the method, then a list of arguments.
end with a "end"
def load_comics( path ) comics = {} File.foreach(path) do |line| name, url = line.split(': ') comics[name] = url.strip end comics end
Example:
class Customer @@no_of_customers =0 def initialize(id, name, addr) @cust_id = id @cust_name = name @cust_addr = addr end end
cust1=Customer .new("1","John","Wisdom Apartments,Ludhiya")
Data:
Integer:
-2^30 to 2^(30-1); with Fixnum, Bignum
Floating number: 123.4, 1.0E6, 4E20, 4e+20
String:
using '' or "". You can substitute the value of any Ruby expression into a string using the sequence #{expr}. expr could be any ruby expression.
puts "Multiplication Value : #{24*60*60}"; Multiplication Value: 86400
Arrays:
using []: ary = ["a", "This is a string", 3.14, 10, "last element"].
ary.each do |i|
puts i
end
Hash(dictionary)
hsh = colors = {"red" => 0xfoo, "green" => 0x0f0}
Ranges:
Range represents an interval.a set of values with a start and an end.
Ranges constructed uisng ".." run from the start to the end. (1..5) means 1,2,3,4,5
Ranges constructed uisng "..." run from the start to the end excluding the end. (1...5) means 1,2,3,4.
Some special variables:
self: The receiver object of the current method.
nil: value representing undefined
_LINE_: The current line number in the source file/
_FILE_: The current file name
Operations:
operator | description | example |
<=> |
COmbined comparsion operator. Returns 0 if first operand equals second, 1 if operand is greater than the second. -1 if first operand is less than the second. |
(a<=>b) returns -1 |
=== | Uesd to test equality within a when clause of a case statement | (1...10) === 5 returns true |
.eql? | True if the receiver and argument have both the same type and equal values | 1.eql?(1.0) is false |
** | Exponent | 2**3 is 8 |
equal? | True if receiver and argument have the same object ID | aObj == bObj |
?: | Conditional Expression | |
defined? |
Parallel Assignment:
a,b,c = 10,20,30
Double Colon "::" unary operator tat allows: constants, instance methods and class methods defined within a class or module, to be accessed from anywhere outside the class or modules.
Conditional:
if conditional code... elsif conditional code... else code end
if x>2 puts "x is greater than 2" elsif x<=2 and x!=0 puts "x is 1" else puts "I can't guess the number"
end
if:
code if condtion $debig =1 print "debug\n" if $debug #will print debug
Unless:executes the code if conditional is false
unless condition code else code end #example x=1 unless x>2 puts "x is less than 2" else puts "x is greater than 2" end #result: x is less than 2
Case statements:
case expr0 when expr1, expr2 stmt1 when expr3, expr4 stmt2 else stmt3 end $age = 5 case $age when 0..2 puts "baby" when 3..6 puts "little child" when 7..12 puts "child" when 13..18 puts "youth" else puts "adult" end #result is "little child"