ruby in 20 minutes
DESCRIPTION
Ruby in 20 minutes. John Pinney [email protected]. What is Ruby?. A true object-oriented language with easily understandable syntax and convenient notations. => pure / elegant / powerful - PowerPoint PPT PresentationTRANSCRIPT
Ruby in 20 minutes
John [email protected]
What is Ruby?
A true object-oriented languagewith easily understandable syntaxand convenient notations.
=> pure / elegant / powerful
“I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python.”
Yukihiro Matsumoto (“Matz”)
The Ruby interpreter
> irb
puts "Hello World"Hello World
(Almost) everything is an object
There are no primitives in Ruby.
Nearly everything can be considered as an object, i.e.is an instance of a classhas an interface for method invocation
"hello".reverse=> "olleh”
44.even?=> true
nil.class=> NilClass
nil.class.class=> Class
Parts of speech
VariablesNumbersStringsSymbolsConstants
RangesRegular Expressions
Methods + argumentsBlocks + arguments
ArraysHashes
Operators
Keywords
Variables
local_variable = 3.0@instance_variable = 4.6@@class_variable = 8.9
(@ = “attribute”)
$global_variable = 2.5
Numbers
1.class => Fixnum
1.0.class=> Float
Symbols
Symbols (starting with a colon ) are like lightweight strings.They always point to the same object, wherever used in the code.
x = :my_symbol
Methods
front_door.openfront_door.open.closefront_door.is_open?front_door.paint(3,:red)front_door.paint(3,:red).dry(30).close
Kernel methods are invoked by their names alone.This is just a bit of syntactic sugar.
print "Hello\n"Hello
Kernel.print("Hello\n")Hello
(print is really a class method of Kernel)
Operators behave as you would expect:1 + 23
But in Ruby they are actually methods!1.+(2)3
Since all operators are methods, they can be defined as you like for your own classes, or even re-defined for existing classes.
Operators
BlocksAny code surrounded by curly braces is a closure, known as a block:
20.times{ print 'CAG'}CAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAG
Blocks are sets of instructions that can be passed around the program.
Blocks can also take arguments, delimited by pipe characters:
"Hello".each_char{|ch| puts ch}Hello
Braces can be replaced by the keywords do and end.
"Hello".each_char do |ch| puts chendHello
Effective use of blocks can allow highly transparent code:
a = [ "a", "b", "c", "d" ]a.collect { |x| x + "!" } ["a!", "b!", "c!", "d!"]
Regular expressionsRegex is very simple to use in Ruby (much nicer than Python!)
text = "Cats are smarter than dogs”;if ( text =~ /(C|c)at(.*)/ ) then puts "I found a cat"endI found a cat
Example
class Greeter def initialize(name = "World") @name = name end def say_hi puts "Hi #{@name}!" end def say_bye puts "Bye #{@name}, come back soon." endend
g = Greeter.new("Pat")g.say_hiHi Pat!g.say_byeBye Pat, come back soon.
g.nameNoMethodError: undefined method 'name' for #<Greeter:0x007f91b18708f8 @name="Pat">
class Greeter attr_accessor :nameendg.name=> "Pat"
g.name = "John"g.say_hiHi John!
Sources:
https://www.ruby-lang.org/en/documentation/quickstart/
http://docs.ruby-doc.com/docs/ProgrammingRuby/
http://mislav.uniqpath.com/poignant-guide/
http://tryruby.org/