mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 17:41:41 +00:00
Merge pull request #369 from Anakros/master
[ruby/ru-ru] Latest changes from English version && small changes in the translation
This commit is contained in:
commit
d2ee4711a7
@ -43,7 +43,7 @@ translators:
|
||||
|
||||
# Логические величины -- это объекты
|
||||
nil # Здесь ничего нет
|
||||
true # правда
|
||||
true # истина
|
||||
false # ложь
|
||||
|
||||
nil.class #=> NilClass
|
||||
@ -79,7 +79,8 @@ false.class #=> FalseClass
|
||||
|
||||
placeholder = "использовать интерполяцию строк"
|
||||
"Я могу #{placeholder}, когда создаю строку с двойными кавычками"
|
||||
#=> "Я могу использовать интерполяцию строк, когда создаю строку с двойными кавычками"
|
||||
#=> "Я могу использовать интерполяцию строк,
|
||||
# когда создаю строку с двойными кавычками"
|
||||
|
||||
|
||||
# печатать в стандартный вывод
|
||||
@ -107,10 +108,10 @@ path = '/bad/name/'
|
||||
# Идентификаторы (тоже объекты)
|
||||
|
||||
# Идентификаторы -- это неизменяемые, многоразовые константы.
|
||||
# Для каждого идентификатора (кроме текста) сохраняется цифровой хэш. При последующем
|
||||
# использовании идентификатора, заместо создания нового объекта, будет найден уже
|
||||
# существующий по цифровому хэшу. Они часто используются вместо строк
|
||||
# для ускорения работы приложений
|
||||
# Для каждого идентификатора (кроме текста) сохраняется цифровой хэш.
|
||||
# При последующем использовании идентификатора, заместо создания нового объекта,
|
||||
# будет найден уже существующий по цифровому хэшу.
|
||||
# Они часто используются вместо строк для ускорения работы приложений
|
||||
|
||||
:pending.class #=> Symbol
|
||||
|
||||
@ -178,15 +179,15 @@ new_hash.keys #=> [:defcon, :action]
|
||||
# Управление ходом выполнения (Управляющие структуры)
|
||||
|
||||
if true
|
||||
"if условие"
|
||||
"Если истина"
|
||||
elsif false
|
||||
"else if, условие"
|
||||
"Иначе, если ложь (опционально)"
|
||||
else
|
||||
"else, условие"
|
||||
"Во всех других случаях"
|
||||
end
|
||||
|
||||
for counter in 1..5
|
||||
puts "#итерация {counter}"
|
||||
puts "итерация #{counter}"
|
||||
end
|
||||
#=> итерация 1
|
||||
#=> итерация 2
|
||||
@ -197,10 +198,11 @@ end
|
||||
# Однако, никто не использует "for" для циклов.
|
||||
# Вместо него Вы должны использовать метод "each" вместе с блоком кода.
|
||||
#
|
||||
# Блок кода -- это один из вариантов создания замыканий (лямбды, анонимные функции).
|
||||
# Блок кода -- это один из вариантов создания замыканий (лямбды,
|
||||
# анонимные функции).
|
||||
# Блок может только передаваться методу, сам по себе он существовать не может.
|
||||
# "for" не имеет своей области видимости и все переменные, объявленные в нём
|
||||
# будут доступны отовсюду. "each" вместе с блоком создаёт свою область видимости.
|
||||
# будут доступны отовсюду. "each" вместе с блоком создаёт свою область видимости
|
||||
|
||||
# Метод "each" для диапазона значений запускает блок кода один раз
|
||||
# для каждого из значений диапазона
|
||||
@ -219,7 +221,7 @@ end
|
||||
# Вы также можете ограничивать блоки фигурными скобками:
|
||||
(1..5).each {|counter| puts "итерация #{counter}"}
|
||||
|
||||
# Содержимое управляющих структур также можно перебирать используя "each":
|
||||
# Содержимое структурных данных также можно перебирать используя "each":
|
||||
array.each do |element|
|
||||
puts "#{element} -- часть массива"
|
||||
end
|
||||
@ -350,10 +352,27 @@ dwight.name #=> "Dwight K. Schrute"
|
||||
# Вызов метода класса
|
||||
Human.say("Hi") #=> "Hi"
|
||||
|
||||
# Класс тоже объект в Ruby. Потому класс может иметь переменные экземпляра.
|
||||
# Область видимости переменной определяется тем, как мы даём имя переменной.
|
||||
# Переменные, имя которых начинается с "$" имеют глобальную область видимости
|
||||
$var = "I'm a global var"
|
||||
defined? $var #=> "global-variable"
|
||||
|
||||
# Переменная экземпляра класса, она видна только в экземпляре
|
||||
@var = "I'm an instance var"
|
||||
defined? @var #=> "instance-variable"
|
||||
|
||||
# Переменная класса, видна для всех экземпляров этого класса и в самом классе
|
||||
@@var = "I'm a class var"
|
||||
defined? @@var #=> "class variable"
|
||||
|
||||
# Имена переменных с большой буквы используются для создания констант
|
||||
Var = "I'm a constant"
|
||||
defined? Var #=> "constant"
|
||||
|
||||
# Класс тоже объект в Ruby. Класс может иметь переменные экземпляра.
|
||||
# Переменная класса доступна в классе, его экземплярах и его потомках.
|
||||
|
||||
# Базовый класс
|
||||
# Пример класса
|
||||
class Human
|
||||
@@foo = 0
|
||||
|
||||
@ -396,4 +415,54 @@ end
|
||||
Human.bar # 0
|
||||
Doctor.bar # nil
|
||||
|
||||
module ModuleExample
|
||||
def foo
|
||||
'foo'
|
||||
end
|
||||
end
|
||||
|
||||
# Включение модулей в класс добавляет их методы в экземпляр класса
|
||||
# Или в сам класс, зависит только от метода подключения
|
||||
class Person
|
||||
include ModuleExample
|
||||
end
|
||||
|
||||
class Book
|
||||
extend ModuleExample
|
||||
end
|
||||
|
||||
Person.foo # => NoMethodError: undefined method `foo' for Person:Class
|
||||
Person.new.foo # => 'foo'
|
||||
Book.foo # => 'foo'
|
||||
Book.new.foo # => NoMethodError: undefined method `foo'
|
||||
|
||||
# Коллбэки при подключении модуля
|
||||
|
||||
module ConcernExample
|
||||
def self.included(base)
|
||||
base.extend(ClassMethods)
|
||||
base.send(:include, InstanceMethods)
|
||||
end
|
||||
|
||||
module ClassMethods
|
||||
def bar
|
||||
'bar'
|
||||
end
|
||||
end
|
||||
|
||||
module InstanceMethods
|
||||
def qux
|
||||
'qux'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Something
|
||||
include ConcernExample
|
||||
end
|
||||
|
||||
Something.bar # => 'bar'
|
||||
Something.qux # => NoMethodError: undefined method `qux'
|
||||
Something.new.bar # => NoMethodError: undefined method `bar'
|
||||
Something.new.qux # => 'qux'
|
||||
```
|
||||
|
Loading…
Reference in New Issue
Block a user