English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основы Ruby

Документация по Ruby для продвинутых пользователей

Методы Ruby

Методы Ruby подобны функциям в других языках программирования. Методы Ruby используются для捆绑 одного или нескольких повторяющихся предложений в единое целое.

Имя метода должно начинаться с маленькой буквы. Если вы начинаете имя метода с большой буквы, Ruby может интерпретировать его как константу,从而导致 неправильное понимание вызова.

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

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

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.

Здесь мы определили alias foo для bar и alias $& для $MATCH. return Ruby

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

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

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

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

Онлайн пример

return
 
или
 
return 12
 
или
 
return 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. С другой стороны, если метод определен в классе, то по умолчанию он помечен как public.

методов и их видимости по умолчанию private Маркировка доступности方法是 по умолчанию через модуль(Module) public или private Изменение.

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

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

class Accounts
   def reading_charge
   end
   def Accounts.return_date
   end
end

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

Accounts.return_date

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

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

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

为编号的全局变量($1, $2,...)起别名是被禁止的。重写内置的全局变量可能会导致严重的问题。

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

Грамматика
alias имя_метода имя_метода

Онлайн пример

alias глобальные переменные глобальные переменные
alias foo bar

alias $MATCH $&

Здесь мы определили alias foo для bar и alias $& для $MATCH. undef Ruby

Командаundef Эта команда используется для отмены определения метода.

Не может出现在 теле метода. undef и aliasИнтерфейс класса можно изменять независимо от родительского класса, но请注意, что в методах внутреннего вызова он может разрушить программу.

undef имя_метода

Онлайн пример

Следующий пример отменяет имя barОпределение метода:

undef bar