Ruby By Examples
|
|
A reader requests expansion of this book to include more material. You can help by adding new material (learn how) or ask for assistance in the reading room. |
The book is broken down into sections. Each section deals with a Ruby language theme, giving examples, from basic to advanced. A full list of Ruby methods can be found here.
Basics
Strings
Example-001: String Length
puts 'That is an object'.size # => prints 17
Example-002: Reversing
puts 'This is not a palindrome'.reverse # => prints 'emordnilap a ton si sihT'
Example-003: Single substitution
puts 'a banana'.sub('a', '*') # => prints '* banana'
Example-004: Global substitution
puts 'a banana'.gsub('a', '*') # => prints '* b*n*n*'
Numbers
Example-001: Use the times method to run code over and over
5.times do puts 'Loop' # => prints 'LoopLoopLoopLoopLoop' end
Example-002: Calculating absolute value
puts -10.abs # => prints 10
Arrays
Example-001
arr = [['0','0','0'],['0','$','0'],['0','0','0']] puts arr[1][1]
Example-002
a = [1, 2, 3, 4].shuffle a.each {|e| puts e}
Example-003
a = %w|this is a string array| puts a.join(' ')
Example-004
a = (0..10).to_a a.map! {|x| x**2} a.each {|e| puts e} # 0, 1, 4, 9, 16...
Example-005
items = ['random', 3, Math::PI, 'items'] puts items.index(3) # 1 puts items.include?(Math::E) # false
Hashes
books = {'978-0140449266' => 'The Count of Monte Cristo', '978-0140439243' => 'The Man in the Iron Mask' } puts books['978-0140439243'] # The output is 'The Man In The Iron Mask' more_books = {} more_books['978-1593081485'] = 'The Three Musketeers'
Operators
:: (Scope Operator)
Example-001
MR_COUNT = 0 # constant defined on main Object class module Foo MR_COUNT = 0 ::MR_COUNT = 1 # set global count to 1 MR_COUNT = 2 # set local count to 2 end puts MR_COUNT # this is the global constant puts Foo::MR_COUNT # this is the local "Foo" constant
Example-002
CONST = ' out there' class Inside_one CONST = proc {' in there'} def where_is_my_CONST ::CONST + ' inside one' end end class Inside_two CONST = ' inside two' def where_is_my_CONST CONST end end puts Inside_one.new.where_is_my_CONST # out there inside one puts Inside_two.new.where_is_my_CONST # inside two puts Object::CONST + Inside_two::CONST # out there inside two puts Inside_two::CONST + CONST # inside two out there puts Inside_one::CONST # #<Proc:0xedfa98(irb):3> , reference to the procedure puts Inside_one::CONST.call + Inside_two::CONST # in there inside two
[ ]
Example-001
a = [1, 2, 3, 4] # array creation puts a[0] # array indexing puts a[-1] # same as a[a.length-1]
Example-002
s = 'a meaningless string' puts s[10] # prints 'e'
Example-003
p = proc {|arg| puts 'You called me with ' + arg.to_s} p['a string arg'] # same as proc.call
**
+ - ! ~
* / %
<< >>
&
| ^
> >= < <=
<=> == === != =~
&&
.. ...
= ( += -= )
not
and or
Intermediate
Modules and Procedures
Classes and Methods
Names, Variables, Constants and Symbols
Advanced
Active record
Sockets
Example-001
# daytimeserver.rb puts'=========================================' require 'socket' puts'== daytime server ==' # Open a socket to a local daytime server, read, and print. print TCPSocket.open('129.6.15.28', 'daytime').read puts'========================================='
Example-002
# socketmethods.rb require 'socket' mySocket = TCPSocket.new( 'www.wikibook.com', 80 ) puts'===================================' # Returns information on this connection's peer socket as a struct # sockaddr packed into a string. strinfo = mySocket.getpeername puts 'strinfo: '+strinfo # Returns true if query returns numeric address not host name. puts BasicSocket::do_not_reverse_lookup puts'===================================' # Returns information on s as a struct sockaddr packed into a string. strinfo = mySocket.getsockname puts 'strinfo: '+strinfo puts'===================================' # Gets the specified socket option. optval = mySocket.getsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR) puts 'optval: '+optval.inspect optval = optval.unpack "i" puts 'optval: '+optval.inspect optval = mySocket.getsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER) puts 'optval: '+optval.inspect optval = optval.unpack "ii" puts 'optval: '+optval.inspect # Sets reverse_lookup status BasicSocket::do_not_reverse_lookup=true # Sets the specified socket option. mySocket.setsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR, true) optval = mySocket.getsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR) puts 'optval: '+optval.inspect optval = optval.unpack "i" puts 'optval: '+optval.inspect puts'===================================' # mySocket.shutdown(2) # 0 shuts down receiving, 1 sending, and 2 both. puts 'mySocket: '+mySocket.inspect puts'===================================' # Returns true if query returns numeric address not host name. puts BasicSocket::do_not_reverse_lookup puts'==================================='