Download Ruby_tutorial

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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
“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 class
has an interface for method invocation
"hello".reverse
=> "olleh”
44.even?
=> true
nil.class
=> NilClass
nil.class.class
=> Class
Parts of speech
Variables
Numbers
Strings
Symbols
Constants
Methods + arguments
Blocks + arguments
Ranges
Regular Expressions
Operators
Arrays
Hashes
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.open
front_door.open.close
front_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
Operators behave as you would expect:
1+2
3
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.
Blocks
Any code surrounded by curly braces is a closure,
known as a block:
20.times{
print 'CAG'
}
CAGCAGCAGCAGCAGCAGCAGCAGCAGC
AGCAGCAGCAGCAGCAGCAGCAGCAGCA
GCAG
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}
H
e
l
l
o
Braces can be replaced by the keywords do and end.
"Hello".each_char do |ch|
puts ch
end
H
e
l
l
o
Effective use of blocks can allow highly transparent
code:
a = [ "a", "b", "c", "d" ]
a.collect { |x| x + "!" }
["a!", "b!", "c!", "d!"]
Regular expressions
Regex 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"
end
I 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."
end
end
g = Greeter.new("Pat")
g.say_hi
Hi Pat!
g.say_bye
Bye Pat, come back soon.
g.name
NoMethodError: undefined method 'name' for
#<Greeter:0x007f91b18708f8 @name="Pat">
class Greeter
attr_accessor :name
end
g.name
=> "Pat"
g.name = "John"
g.say_hi
Hi John!
Sources:
https://www.rubylang.org/en/documentation/quickstart/
http://docs.ruby-doc.com/docs/ProgrammingRuby/
http://mislav.uniqpath.com/poignant-guide/
http://tryruby.org/
Related documents