Методы Ruby очень похожи на функции в любом другом языке программирования. Методы Ruby используются для объединения одного или нескольких повторяющихся операторов в один блок.
Имена методов должны начинаться со строчной буквы. Если вы начинаете имя метода с заглавной буквы, Ruby может подумать, что это константа и, следовательно, может неправильно анализировать вызов.
Методы должны быть определены до их вызова, в противном случае Ruby вызовет исключение для вызова неопределенного метода.
Синтаксис
def method_name [( [arg [= default]]...[, * arg [, &expr ]])] expr.. end
Итак, вы можете определить простой метод следующим образом:
def method_name expr.. end
Вы можете представить метод, который принимает параметры, подобные этим —
def method_name (var1, var2) expr.. end
Вы можете установить значения по умолчанию для параметров, которые будут использоваться, если метод вызывается без передачи необходимых параметров —
def method_name (var1 = value1, var2 = value2) expr.. end
Каждый раз, когда вы вызываете простой метод, вы пишете только имя метода следующим образом:
method_name
Однако, когда вы вызываете метод с параметрами, вы пишете имя метода вместе с параметрами, такими как —
method_name 25, 30
Самый важный недостаток использования методов с параметрами заключается в том, что вам нужно запоминать количество параметров при каждом вызове таких методов. Например, если метод принимает три параметра, а вы передаете только два, Ruby отображает ошибку.
пример
#!/usr/bin/ruby def test(a1 = "Ruby", a2 = "Perl") puts "The programming language is #{a1}" puts "The programming language is #{a2}" end test "C", "C++" test
Это даст следующий результат —
The programming language is C The programming language is C++ The programming language is Ruby The programming language is Perl
Возвращаемые значения из методов
Каждый метод в Ruby возвращает значение по умолчанию. Это возвращаемое значение будет значением последнего оператора. Например —
def test i = 100 j = 10 k = 0 end
Этот метод при вызове вернет последнюю объявленную переменную k .
Ruby заявление о возврате
Оператор return в ruby используется для возврата одного или нескольких значений из метода Ruby.
Синтаксис
return [expr[`,' expr...]]
Если дано более двух выражений, массив, содержащий эти значения, будет возвращаемым значением. Если выражение не указано, nil будет возвращаемым значением.
пример
return OR return 12 OR return 1,2,3
Посмотрите на этот пример —
#!/usr/bin/ruby def test i = 100 j = 200 k = 300 return i, j, k end var = test puts var
Это даст следующий результат —
100 200 300
Переменное количество параметров
Предположим, вы объявляете метод, который принимает два параметра, всякий раз, когда вы вызываете этот метод, вам необходимо передать два параметра вместе с ним.
Тем не менее, Ruby позволяет объявлять методы, которые работают с переменным числом параметров. Давайте рассмотрим образец этого —
#!/usr/bin/ruby def sample (*test) puts "The number of parameters is #{test.length}" for i in 0...test.length puts "The parameters are #{test[i]}" end end sample "Zara", "6", "F" sample "Mac", "36", "M", "MCA"
В этом коде вы объявили образец метода, который принимает тест одного параметра. Однако этот параметр является переменным параметром. Это означает, что этот параметр может принимать любое количество переменных. Итак, приведенный выше код даст следующий результат —
The number of parameters is 3 The parameters are Zara The parameters are 6 The parameters are F The number of parameters is 4 The parameters are Mac The parameters are 36 The parameters are M The parameters are MCA
Методы класса
Если метод определен вне определения класса, метод помечается как закрытый по умолчанию. С другой стороны, методы, определенные в определении класса, по умолчанию помечены как общедоступные. Видимость по умолчанию и приватная метка методов могут быть изменены как публичными, так и приватными в модуле.
Всякий раз, когда вы хотите получить доступ к методу класса, вам сначала нужно создать экземпляр класса. Затем, используя объект, вы можете получить доступ к любому члену класса.
Ruby дает вам способ получить доступ к методу без создания экземпляра класса. Давайте посмотрим, как метод класса объявлен и доступен —
class Accounts def reading_charge end def Accounts.return_date end end
Посмотрите, как объявлен метод return_date. Он объявляется с именем класса, за которым следует точка, за которой следует имя метода. Вы можете получить доступ к этому методу класса напрямую следующим образом:
Accounts.return_date
Чтобы получить доступ к этому методу, вам не нужно создавать объекты класса Accounts.
Заявление псевдонима Ruby
Это дает псевдоним для методов или глобальных переменных. Псевдонимы не могут быть определены в теле метода. Псевдоним метода сохраняет текущее определение метода, даже если методы переопределены.
Создание псевдонимов для пронумерованных глобальных переменных ($ 1, $ 2, …) запрещено. Переопределение встроенных глобальных переменных может вызвать серьезные проблемы.
Синтаксис
alias method-name method-name alias global-variable-name global-variable-name
пример
alias foo bar alias $MATCH $&
Здесь мы определили псевдоним foo для bar, а $ MATCH — это псевдоним для $ &
Ruby undef Заявление
Это отменяет определение метода. Undef не может появиться в теле метода.
Используя undef и псевдоним , интерфейс класса может быть изменен независимо от суперкласса, но обратите внимание, что он может нарушать работу программ внутренним вызовом метода self.
Синтаксис
undef method-name
пример
Чтобы отменить определение метода с именем bar, сделайте следующее: