Рубиновые методы

Методы

Метод в Ruby — это набор выражений, возвращающих значение. Внутри метода вы можете организовать свой код в подпрограммы, которые можно легко вызывать из других областей их программы.

Имя метода должно начинаться с буквы или символа с восьмибитным набором. Он может содержать буквы, цифры, _ (нижнее подчеркивание или нижняя строка) или символ с восьмибитным набором. По соглашению для разделения слов в многословном имени метода используются символы подчеркивания:

  • Определение метода начинается с ключевого слова def, за которым следует имя метода.
  • Параметры метода указываются в скобках после имени метода.
  • Определение метода заканчивается ключевым словом ‘end’ внизу.

Пример:

 def print_data (value) помещает значение end 

Имена методов:

Имя метода должно начинаться с буквы или символа с восьмибитным набором. Он может содержать буквы, цифры, _ (нижнее подчеркивание или нижняя строка) или символ с восьмибитным набором. По соглашению для разделения слов в многословном имени метода используются символы подчеркивания.

  • Имена методов совместимы с US-ASCII, поскольку ключи для их ввода существуют на всех клавиатурах.
  • Имена методов могут оканчиваться на! (взрыв или восклицательный знак), а? (вопросительный знак) или = знак равенства.
  • Методы взрыва (! в конце имени метода) вызываются и выполняются так же, как и любой другой метод.
  • Методы которые заканчиваются вопросительным знаком, по соглашению return boolean. Но они не всегда могут возвращать только истину или ложь, часто они возвращают объект, чтобы указать истинное значение.
  • Методы, заканчивающиеся знаком равенства, указывают на метод присваивания. Для методов присваивания возвращаемое значение игнорируется, вместо этого возвращаются аргументы.

Возвращаемые значения:

Автор по умолчанию метод возвращает последний оператор, который был вычислен в теле метода. Вы можете сделать это с помощью ключевого слова return. В следующем примере последним вычисленным выражением была простая сумма 100 + 200.

 def add_values ​​return 100 + 200end 

Этот оператор также используется для возврата перед вычисляется последнее выражение

 def add_values ​​return 100 + 200end 300 + 200 # это выражение никогда не оценивается 

Для методов присваивания возвращаемое значение всегда игнорируется. Вместо этого будет возвращен аргумент:

 def x = (value) return 100 + valueendp (x = 500) # выводит 500 

Аргументы:

В Ruby метод может принимать аргументы.

  • Список аргументов следует за именем метода.
  • Скобки вокруг аргументов необязательны.
  • Несколько аргументов разделяются запятой.
  • Аргументы позиционны.

См. следующий пример:

  def add_values ​​(num1, num2) return num1 + num2end  

В приведенном выше примере при вызове метода вы должны предоставить два аргумента. В теле метода аргументы являются локальными переменными. Затем метод добавит два аргумента и вернет значение. Если задано 100 и 200, этот метод вернет 300.

Значения по умолчанию:

Вы можете установить значения аргументов по умолчанию. Значение по умолчанию необязательно указывать первым, но аргументы со значениями по умолчанию должны быть сгруппированы вместе.

  def add_values ​​(num1, num2 = 15) num1 + num2end  

Вызов метода:

Вы можете вызывать методы со скобками или без них. Вот синтаксис:

 # С круглыми скобкамиUserMethod () # Без круглых скобокUserMethod 

Вот пример:

   # Без скобокdef Print_String () put ("Метод без скобок") end # С круглыми скобкамиdef Add_values ​​(num1, num2) return num1 + num2end # Значения по умолчаниюdef default_values ​​(num1, num2 = 12) return num1 + num2endPrint_String () Put (Add  , 200)) put (default_values ​​(50))  

Вывод:

 Метод без круглых скобок 30062 

Scope:

Вы можете определить метод экземпляра для определенного класса с помощью ключевого слова class:

  class Student def admission  # ... endend  

Метод может быть определен для другого объекта. Вы можете определить «метод класса» следующим образом:

  class Student def self.admission # ... endend  

Здесь — это синтаксис для добавления метода к объекту:

  language = "Ruby" def language.tutorial plays (self + ", Learning.") endlanguage.tutorial # returns "  Ruby, Learning. " 

Примечание: self — это ключевое слово, относящееся к текущему объекту, рассматриваемому компилятором.

Переопределение

Когда Ruby выполняет ключевое слово def, он просто переопределяет его (независимо от того, существует ли метод уже или нет). Это называется переопределением. См. Следующий пример:

  def language put ("Мы изучаем PHP") enddef language put ("Мы изучаем Ruby") end # Теперь вызовем methodlanguage  

Вывод:

 Мы изучаем Ruby 

Подробнее об аргументах

Декомпозиция массива:

Вы можете извлекать значения из массива, используя дополнительные круглые скобки в аргументах:

  def add_numbers ((n1  , n2)) p n1: n1, n2: n2endadd_numbers ([10, 20]))  

Вывод:

 {: n1 => 10  ,: n2 => 20} 

Дополнительный аргумент в массиве игнорируется:

  def add_numbers ((n1, n2)) p n1:  n1, n2: n2endadd_numbers ([10, 20, 30]))  

Вывод:

 {: n1 => 10,: n2 =>  20} 

Используя *, вы можете собрать оставшиеся аргументы. Это разбивает массив на первый и остальные элементы:

  def add_numbers ((n1, * n2)) p n1: n1, n2: n2endadd_numbers ([10, 20,  30]))  

Вывод:

 {: n1 => 10,: n2 => [20, 30]} 

Аргумент массива/хэша:

Префикс аргумента с помощью *, чтобы преобразовать аргумент в массив. Аргумент массива должен быть последним позиционным аргументом, он должен стоять перед любыми аргументами ключевого слова.

  def gather_arguments (* arguments) p argumentssendgather_arguments 1, 2, 3 # printts [1,  2, 3]  

Аргумент массива будет фиксировать хэш в качестве последней записи, если хеш был отправлен вызывающим после всех позиционных аргументов. Это происходит только в том случае, если метод не объявляет любые аргументы ключевого слова.

  gather_arguments 1, a: 2 # выводит [1, {: a => 2}]  

Также обратите внимание, что для игнорирования аргументов можно использовать голый *:

 def ignore_arguments (*) end 

Аргументы ключевого слова:

Аргументы ключевого слова аналогичны позиционным аргументам со значениями по умолчанию:

  def add_values ​​(first: 1, second: 2) first + seconddend  

Принимаются произвольные аргументы ключевого слова с **:

 def gather_arguments (first: nil, ** rest) p first, restendgather_arguments first: 1, second  : 2, третий: 3 # печатает 1, затем  {: second => 2,: third => 3} 

Примечание:
a. При вызове метода с аргументами ключевого слова аргументы могут появляться в любом порядке. Если вызывающий объект отправляет неизвестный аргумент ключевого слова, возникает ошибка ArgumentError.
b. При смешивании аргументов ключевого слова и позиционных аргументов все позиционные аргументы должны появляться перед любыми аргументами ключевого слова.

Аргумент блока:

Блок Аргумент используется для передачи блока другому методу. Аргумент блока обозначается & и должен идти последним.

 def each_item (& block) @ items.each (& block) end 

Обработка исключений :

У методов есть подразумеваемый блок обработки исключений, поэтому вам не нужно использовать begin или end для обработки исключений.

 def my_method begin # код, который может вызвать исключение rescue # обработать исключение endend 

Может быть записан как:

 def my_method #  код, который может вызвать исключениеrescue # handle exceptionend 

Если вы хотите спасти исключение только для части вашего метода, используйте begin и end. Дополнительные сведения см. На странице обработки исключений

Оцените статью
nanomode.ru
Добавить комментарий