Ruby Методы
Методы Ruby похожи на функции в других языках программирования. Методы Ruby используются для объединения одного или нескольких повторяющихся операторов в единый блок.
Имена методов должны начинаться со строчной буквы. Если имя метода начинается с заглавной буквы, Ruby может воспринять его как константу, из-за чего вызов будет разобран неправильно.
Методы должны быть определены до их вызова; в противном случае Ruby вызовет исключение о вызове неопределённого метода.
Синтаксис
Итак, простой метод можно определить следующим образом:
Можно определить метод, принимающий параметры, следующим образом:
Вы можете задать значения по умолчанию для параметров, которые будут использоваться, если обязательные параметры не переданы при вызове метода:
Когда вы хотите вызвать метод, вам нужно использовать только имя метода, как показано ниже:
Однако, когда вы вызываете метод с параметрами, вам нужно указать параметры при написании имени метода, например:
Самый большой недостаток использования методов с параметрами заключается в том, что вам нужно помнить количество параметров при вызове метода. Например, если вы передадите только два аргумента методу, который принимает три параметра, Ruby выдаст ошибку.
Пример
Попробуйте »
Вывод приведенного выше примера:
编程语言为 C 编程语言为 C++ 编程语言为 Ruby 编程语言为 Perl
Возврат значений из методов
Каждый метод в Ruby по умолчанию возвращает значение. Возвращаемое значение — это значение последнего выражения. Например:
Пример
Когда вызывается этот метод, будет возвращена последняя объявленная переменная k.
Ruby returnОператор
В Ruby, операторreturnиспользуется для возврата одного или нескольких значений из метода Ruby.
Синтаксис
Если задано более двух выражений, массив, содержащий эти значения, станет возвращаемым значением. Если не задано ни одного выражения, nil будет возвращаемым значением.
Пример
Посмотрите на следующий пример:
Пример
Попробуйте »
Вывод приведенного выше примера:
100 200 300
Переменное число параметров
Предположим, вы объявляете метод с двумя параметрами. Когда вы вызываете этот метод, вам также нужно передать два аргумента.
Однако Ruby позволяет объявлять методы с переменным числом параметров. Давайте рассмотрим следующий пример:
Пример
Попробуйте »
В этом коде вы объявили метод sample, который принимает параметр test. Однако этот параметр является переменным параметром. Это означает, что параметр может принимать переменное количество переменных. Вывод приведенного выше примера:
参数个数为 3 参数值为 Zara 参数值为 6 参数值为 F 参数个数为 4 参数值为 Mac 参数值为 36 参数值为 M 参数值为 MCA
Методы класса
Когда метод определен вне класса, по умолчанию он помечается как private.privateС другой стороны, если метод определен внутри класса, по умолчанию он помечается как public.
Видимость по умолчанию иprivateмаркер можно изменить с помощью модуля (Module)publicилиprivatepublic или private.
Когда вы хотите получить доступ к методам класса, сначала нужно создать экземпляр класса. Затем, используя объект, вы можете получить доступ к любому члену класса.
Ruby предоставляет способ доступа к методам без создания экземпляра. Давайте посмотрим, как объявлять методы класса и обращаться к ним:
Мы уже знаем, как объявляется метод return_date. Он объявляется путём размещения точки после имени класса, за которой следует имя метода. Вы можете напрямую обращаться к методам класса следующим образом:
Чтобы обратиться к этому методу, вам не нужно создавать объект класса Accounts.
Ruby aliasОператор
Этот оператор используется для создания псевдонима метода или глобальной переменной. Псевдонимы нельзя определять внутри тела метода. Даже если метод переопределён, псевдоним метода сохраняет текущее определение метода.
Создание псевдонимов для нумерованных глобальных переменных ($1, $2,...) запрещено. Переопределение встроенных глобальных переменных может вызвать серьёзные проблемы.
Синтаксис
Пример
Здесь мы определили псевдоним foo для bar и псевдоним $MATCH для $&.
Ruby undefОператор
Этот оператор используется для отмены определения метода.undefОн не может находиться внутри тела метода.
Используяundefиalias, интерфейс класса можно изменять независимо от родительского класса, но учтите, что это может нарушить работу программы при вызове методов внутри самого себя.
Пример
В следующем примере отменяется определение метода с именемbarопределение метода: