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 # Здесь ничего нет
|
nil # Здесь ничего нет
|
||||||
true # правда
|
true # истина
|
||||||
false # ложь
|
false # ложь
|
||||||
|
|
||||||
nil.class #=> NilClass
|
nil.class #=> NilClass
|
||||||
@ -79,7 +79,8 @@ false.class #=> FalseClass
|
|||||||
|
|
||||||
placeholder = "использовать интерполяцию строк"
|
placeholder = "использовать интерполяцию строк"
|
||||||
"Я могу #{placeholder}, когда создаю строку с двойными кавычками"
|
"Я могу #{placeholder}, когда создаю строку с двойными кавычками"
|
||||||
#=> "Я могу использовать интерполяцию строк, когда создаю строку с двойными кавычками"
|
#=> "Я могу использовать интерполяцию строк,
|
||||||
|
# когда создаю строку с двойными кавычками"
|
||||||
|
|
||||||
|
|
||||||
# печатать в стандартный вывод
|
# печатать в стандартный вывод
|
||||||
@ -107,10 +108,10 @@ path = '/bad/name/'
|
|||||||
# Идентификаторы (тоже объекты)
|
# Идентификаторы (тоже объекты)
|
||||||
|
|
||||||
# Идентификаторы -- это неизменяемые, многоразовые константы.
|
# Идентификаторы -- это неизменяемые, многоразовые константы.
|
||||||
# Для каждого идентификатора (кроме текста) сохраняется цифровой хэш. При последующем
|
# Для каждого идентификатора (кроме текста) сохраняется цифровой хэш.
|
||||||
# использовании идентификатора, заместо создания нового объекта, будет найден уже
|
# При последующем использовании идентификатора, заместо создания нового объекта,
|
||||||
# существующий по цифровому хэшу. Они часто используются вместо строк
|
# будет найден уже существующий по цифровому хэшу.
|
||||||
# для ускорения работы приложений
|
# Они часто используются вместо строк для ускорения работы приложений
|
||||||
|
|
||||||
:pending.class #=> Symbol
|
:pending.class #=> Symbol
|
||||||
|
|
||||||
@ -178,15 +179,15 @@ new_hash.keys #=> [:defcon, :action]
|
|||||||
# Управление ходом выполнения (Управляющие структуры)
|
# Управление ходом выполнения (Управляющие структуры)
|
||||||
|
|
||||||
if true
|
if true
|
||||||
"if условие"
|
"Если истина"
|
||||||
elsif false
|
elsif false
|
||||||
"else if, условие"
|
"Иначе, если ложь (опционально)"
|
||||||
else
|
else
|
||||||
"else, условие"
|
"Во всех других случаях"
|
||||||
end
|
end
|
||||||
|
|
||||||
for counter in 1..5
|
for counter in 1..5
|
||||||
puts "#итерация {counter}"
|
puts "итерация #{counter}"
|
||||||
end
|
end
|
||||||
#=> итерация 1
|
#=> итерация 1
|
||||||
#=> итерация 2
|
#=> итерация 2
|
||||||
@ -197,10 +198,11 @@ end
|
|||||||
# Однако, никто не использует "for" для циклов.
|
# Однако, никто не использует "for" для циклов.
|
||||||
# Вместо него Вы должны использовать метод "each" вместе с блоком кода.
|
# Вместо него Вы должны использовать метод "each" вместе с блоком кода.
|
||||||
#
|
#
|
||||||
# Блок кода -- это один из вариантов создания замыканий (лямбды, анонимные функции).
|
# Блок кода -- это один из вариантов создания замыканий (лямбды,
|
||||||
|
# анонимные функции).
|
||||||
# Блок может только передаваться методу, сам по себе он существовать не может.
|
# Блок может только передаваться методу, сам по себе он существовать не может.
|
||||||
# "for" не имеет своей области видимости и все переменные, объявленные в нём
|
# "for" не имеет своей области видимости и все переменные, объявленные в нём
|
||||||
# будут доступны отовсюду. "each" вместе с блоком создаёт свою область видимости.
|
# будут доступны отовсюду. "each" вместе с блоком создаёт свою область видимости
|
||||||
|
|
||||||
# Метод "each" для диапазона значений запускает блок кода один раз
|
# Метод "each" для диапазона значений запускает блок кода один раз
|
||||||
# для каждого из значений диапазона
|
# для каждого из значений диапазона
|
||||||
@ -219,7 +221,7 @@ end
|
|||||||
# Вы также можете ограничивать блоки фигурными скобками:
|
# Вы также можете ограничивать блоки фигурными скобками:
|
||||||
(1..5).each {|counter| puts "итерация #{counter}"}
|
(1..5).each {|counter| puts "итерация #{counter}"}
|
||||||
|
|
||||||
# Содержимое управляющих структур также можно перебирать используя "each":
|
# Содержимое структурных данных также можно перебирать используя "each":
|
||||||
array.each do |element|
|
array.each do |element|
|
||||||
puts "#{element} -- часть массива"
|
puts "#{element} -- часть массива"
|
||||||
end
|
end
|
||||||
@ -350,10 +352,27 @@ dwight.name #=> "Dwight K. Schrute"
|
|||||||
# Вызов метода класса
|
# Вызов метода класса
|
||||||
Human.say("Hi") #=> "Hi"
|
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
|
class Human
|
||||||
@@foo = 0
|
@@foo = 0
|
||||||
|
|
||||||
@ -396,4 +415,54 @@ end
|
|||||||
Human.bar # 0
|
Human.bar # 0
|
||||||
Doctor.bar # nil
|
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