Статья написана автором Галиев Руслан

Шпаргалка по ruby

MVC Схема

Строки
Сложение строк

1
2
>>"foo" + "bar" # Сложение строк
=> "foobar"

Интерполяция строк

1
2
3
4
>> first_name = "Michael" # Присвоение значения переменной
=> "Michael"
>> "#{first_name} Hartl" # Интерполяция строки
=> "Michael Hartl"

Массивы

Создание массива

1
a = [42, 8, 17]

Обращение к массиву

1
2
3
4
5
a = [2]
a.first
a.last
a.second
a[-1]

Некоторые методы массивов

1
2
3
a.sort
a.reverse
a.shuffle

Добавление элементов в массив

1
2
a.push(6) # Отправить 6 в массив
a << "foo" << "bar" # Сцепление отправляемых в массив данных

Преобразование строки в массив

1
2
>> "fooxbarxbazx".split('x')
=> ["foo", "bar", "baz"]

Объединение элементов массива

1
2
3
4
5
6
>> a
=> [42, 8, 17, 7, "foo", "bar"]
>> a.join # Join on nothing
>> "428177foobar"
>> a.join(', ') # Join on comma-space
=> "42, 8, 17, 7, foo, bar"

Диапазоны/Интервалы

Примеры интервалов

1
2
3
4
5
6
>> 0..9
=> 0..9
>> (0..9).to_a   # Use parentheses to call to_a on the range
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>> ('a'..'e').to_a
=> ["a", "b", "c", "d", "e"]

Блоки

Примеры блоков

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>> (1..5).each { |i| puts 2 * i }
2
4
6
8
10
=> 1..5
>> (1..5).each do |number|
?>   puts 2 * number
>>   puts '--'
>> end
2
--
4
--
6
--
8
--
10
--
=> 1..5
1
2
3
4
5
6
7
8
9
10
11
>> 3.times { puts "Betelgeuse!" }   # 3.times takes a block with no variables.
"Betelgeuse!"
"Betelgeuse!"
"Betelgeuse!"
=> 3
>> (1..5).map { |i| i**2 }          # The ** notation is for 'power'.
=> [1, 4, 9, 16, 25]
>> %w[a b c]                        # Recall that %w makes string arrays.
=> ["a", "b", "c"]
>> %w[a b c].map { |char| char.upcase }
=> ["A", "B", "C"]

Хэши
Примеры:

1
2
3
4
5
6
7
8
9
10
>> user = {}                          # {} is an empty hash.
=> {}
>> user["first_name"] = "Michael"     # Key "first_name", value "Michael"
=> "Michael"
>> user["last_name"] = "Hartl"        # Key "last_name", value "Hartl"
=> "Hartl"
>> user["first_name"]                 # Element access is like arrays.
=> "Michael"
>> user                               # A literal representation of the hash
=> {"last_name"=>"Hartl", "first_name"=>"Michael"}
1
2
>> user = { "first_name" => "Michael", "last_name" => "Hartl" }
=> {"last_name"=>"Hartl", "first_name"=>"Michael"}

Пример символов

1
2
3
4
5
6
>> user = { :name => "Michael Hartl", :email => "michael@example.com" }
=> {:name=>"Michael Hartl", :email=>"michael@example.com"}
>> user[:name]              # Access the value corresponding to :name.
=> "Michael Hartl"
>> user[:password]          # Access the value of an undefined key.
=> nil

Пример вложенного хэша

1
2
3
4
5
6
7
8
>> params = {}        # Define a hash called 'params' (short for 'parameters').
=> {}
>> params[:user] = { :name => "Michael Hartl", :email => "mhartl@example.com" }
=> {:name=>"Michael Hartl", :email=>"mhartl@example.com"}
>> params
=> {:user=>{:name=>"Michael Hartl", :email=>"mhartl@example.com"}}
>>  params[:user][:email]
=> "mhartl@example.com"

Пример хэша и метода each(each метод для хэшей итерирует по одной хэш паре ключ-значение за раз.)

1
2
3
4
5
6
7
>> flash = { :success => "It worked!", :error => "It failed. :-(" }
=> {:success=>"It worked!", :error=>"It failed. :-("}
>> flash.each do |key, value|
?>   puts "Key #{key.inspect} has value #{value.inspect}"
>> end
Key :success has value "It worked!"
Key :error has value "It failed. :-("

Метод inspect

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>> puts (1..5).to_a            # Put an array as a string.
1
2
3
4
5
>> puts (1..5).to_a.inspect    # Put a literal array.
[1, 2, 3, 4, 5]
>> puts :name, :name.inspect
name
:name
>> puts "It worked!", "It worked!".inspect
It worked!
"It worked!"
1
2
>> p :name             # Same as 'puts :name.inspect'
:name

Классы
Создание экземпляра класса

1
2
3
4
5
6
>> s = String.new("foobar")   # A named constructor for a string
=> "foobar"
>> s.class
=> String
>> s == "foobar"
=> true
1
2
>> a = Array.new([1, 3, 2])
=> [1, 3, 2]

Наследование классов

1
2
3
4
5
6
7
8
9
10
>> s = String.new("foobar")
=> "foobar"
>> s.class                        # Find the class of s.
=> String
>> s.class.superclass             # Find the superclass of String.
=> Object
>> s.class.superclass.superclass  # Ruby 1.9 uses a new BasicObject base class
=> BasicObject
>> s.class.superclass.superclass.superclass
=> nil


Создание собственного класса, и метода этого класса

1
2
3
4
5
6
>> class Word
>>   def palindrome?(string)
>>     string == string.reverse
>>   end
>> end
=> nil

Создание экземпляра класса и обращение к методу в классе

1
2
3
4
5
6
>> w = Word.new              # Make a new Word object.
=> #<Word:0x22d0b20>
>> w.palindrome?("foobar")
=> false
>> w.palindrome?("level")
=> true

Наследование классов

1
2
3
4
5
6
7
>> class Word < String             # Word inherits from String.
>>   # Return true if the string is its own reverse.
>>   def palindrome?
>>     self == self.reverse        # self is the string itself.
>>   end
>> end
=> nil

Таким образом экземпляры класса Word будут также обладать всеми свойствами класса String
Изменение встроенных классов

1
2
3
4
5
6
7
8
9
>> class String
>>   # Return true if the string is its own reverse.
>>   def palindrome?
>>     self == self.reverse
>>   end
>> end
=> nil
>> "deified".palindrome?
=> true

Пример создания класса:

1
2
3
4
5
6
7
8
9
10
11
12
class User
  attr_accessor :name, :email

  def initialize(attributes = {})
    @name  = attributes[:name]
    @email = attributes[:email]
  end

  def formatted_email
    "#{@name} <#{@email}>"
  end
end
Комментарии

You must be logged in to post a comment.

Tags Связь с комментариями статьи:
RSS комментарии