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

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 "프로그래밍 언어는 #{a"1"
   puts "프로그래밍 언어는 #{a"2"
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이 반환 값이 됩니다.

온라인 예제

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"

이 코드에서는 method sample을 선언했으며, test 매개변수를 받습니다. 그러나, 이 매개변수는 변수 매개변수입니다. 이는 매개변수가 다양한 개수의 변수를 가질 수 있다는 것을 의미합니다. 이 예제의 실행 결과는 다음과 같습니다:

파라미터 개수가 3
파라미터 값이 Zara
파라미터 값이 6
파라미터 값이 F
파라미터 개수가 4
파라미터 값이 Mac
파라미터 값이 36
파라미터 값이 M
파라미터 값이 MCA

클래스 메서드

메서드가 클래스 외부에 정의되어 있다면 기본적으로 private를 통해 표시할 수 있습니다. 그리고, 메서드가 클래스 내에 정의되어 있다면 기본적으로 public으로 표시됩니다.

메서드 기본 접근성 private 모듈(Module)의 public 또는 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 $&

여기서는 bar에 foo, $&에 $MATCH라는 별명을 부여했습니다.

Ruby undef 문장

이 문장은 메서드 정의를 취소합니다.undef 는 메서드 본체 내에 나타날 수 없습니다.

를 사용하여 undefalias의 인터페이스는 부모 클래스에서 독립적으로 수정할 수 있지만, 자신의 내부 메서드 호출 시 프로그램을 파괴할 수 있습니다. 주의하세요.

undef 메서드 이름

온라인 예제

이하의 예제는 이름이 bar메서드 정의:

undef bar