Ruby Методы

Методы 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 # -*- coding: UTF-8 -*- def test(a1="Ruby", a2="Perl") puts "Язык программирования — #{a1}" puts "Язык программирования — #{a2}" end test "C", "C++" test

Попробуйте »

Вывод приведенного выше примера:

编程语言为 C
编程语言为 C++
编程语言为 Ruby
编程语言为 Perl

Возврат значений из методов

Каждый метод в Ruby по умолчанию возвращает значение. Возвращаемое значение — это значение последнего выражения. Например:

Пример

def test i = 100 j = 10 k = 0 end

Когда вызывается этот метод, будет возвращена последняя объявленная переменная k.

Ruby returnОператор

В Ruby, операторreturnиспользуется для возврата одного или нескольких значений из метода Ruby.

Синтаксис

return [expr[`,' expr...]]

Если задано более двух выражений, массив, содержащий эти значения, станет возвращаемым значением. Если не задано ни одного выражения, nil будет возвращаемым значением.

Пример

returnorreturn 12orreturn 1,2,3

Посмотрите на следующий пример:

Пример

#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test i = 100 j = 200 k = 300 return i, j, k end var = test puts var

Попробуйте »

Вывод приведенного выше примера:

100
200
300

Переменное число параметров

Предположим, вы объявляете метод с двумя параметрами. Когда вы вызываете этот метод, вам также нужно передать два аргумента.

Однако Ruby позволяет объявлять методы с переменным числом параметров. Давайте рассмотрим следующий пример:

Пример

#!/usr/bin/ruby # -*- coding: UTF-8 -*- def sample (*test) puts "Количество параметров: #{test.length}" for i in 0...test.length puts "Значение параметра: #{test[i]}" end end sample "Zara", "6", "F" sample "Mac", "36", "M", "MCA"

Попробуйте »

В этом коде вы объявили метод sample, который принимает параметр test. Однако этот параметр является переменным параметром. Это означает, что параметр может принимать переменное количество переменных. Вывод приведенного выше примера:

参数个数为 3
参数值为 Zara
参数值为 6
参数值为 F
参数个数为 4
参数值为 Mac
参数值为 36
参数值为 M
参数值为 MCA

Методы класса

Когда метод определен вне класса, по умолчанию он помечается как private.privateС другой стороны, если метод определен внутри класса, по умолчанию он помечается как public.

Видимость по умолчанию иprivateмаркер можно изменить с помощью модуля (Module)publicилиprivatepublic или private.

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

Ruby предоставляет способ доступа к методам без создания экземпляра. Давайте посмотрим, как объявлять методы класса и обращаться к ним:

class Accounts def reading_charge end def Accounts.return_date end end

Мы уже знаем, как объявляется метод return_date. Он объявляется путём размещения точки после имени класса, за которой следует имя метода. Вы можете напрямую обращаться к методам класса следующим образом:

Accounts.return_date

Чтобы обратиться к этому методу, вам не нужно создавать объект класса Accounts.

Ruby aliasОператор

Этот оператор используется для создания псевдонима метода или глобальной переменной. Псевдонимы нельзя определять внутри тела метода. Даже если метод переопределён, псевдоним метода сохраняет текущее определение метода.

Создание псевдонимов для нумерованных глобальных переменных ($1, $2,...) запрещено. Переопределение встроенных глобальных переменных может вызвать серьёзные проблемы.

Синтаксис

aliasимя метода имя методаaliasглобальная переменная глобальная переменная

Пример

alias foo bar alias $MATCH $&

Здесь мы определили псевдоним foo для bar и псевдоним $MATCH для $&.

Ruby undefОператор

Этот оператор используется для отмены определения метода.undefОн не может находиться внутри тела метода.

Используяundefиalias, интерфейс класса можно изменять независимо от родительского класса, но учтите, что это может нарушить работу программы при вызове методов внутри самого себя.

undefимя метода

Пример

В следующем примере отменяется определение метода с именемbarопределение метода:

undef bar
Другие расширения