diff options
| author | Alexey <anakros.symbian@gmail.com> | 2013-09-29 00:19:08 +0700 | 
|---|---|---|
| committer | Alexey <anakros.symbian@gmail.com> | 2013-09-29 00:19:08 +0700 | 
| commit | 8b96638dc8555f3a85a8065435a7894671f514f7 (patch) | |
| tree | 0e29320446e06311688a533c8af31b61c3398a3a | |
| parent | 42a2263ab1b2d911f6865975e518da91a3b73e0b (diff) | |
[ruby/ru-ru] Latest changes from English version && small changes in the translation
| -rw-r--r-- | ru-ru/ruby-ru.html.markdown | 99 | 
1 files changed, 84 insertions, 15 deletions
| diff --git a/ru-ru/ruby-ru.html.markdown b/ru-ru/ruby-ru.html.markdown index ead681ef..318e0e09 100644 --- a/ru-ru/ruby-ru.html.markdown +++ b/ru-ru/ruby-ru.html.markdown @@ -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'  ``` | 
