English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 [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 클래스의 객체를 생성할 필요가 없습니다.
이 문장은 메서드나 전역 변수에 별명을 부여하는 데 사용됩니다. 별명은 메서드 본체 내에서 정의할 수 없습니다. 메서드가 재정의되더라도 메서드의 별명은 메서드의 현재 정의를 유지합니다.
编号的全局变量($1, $2,...)에 별명을 지정하는 것은 금지되어 있습니다. 내장 전역 변수를 재정의할 수 있어서 심각한 문제가 발생할 수 있습니다.
alias 메서드 이름 메서드 이름 alias 전역 변수 전역 변수
alias foo bar alias $MATCH $&
여기서는 bar에 foo, $&에 $MATCH라는 별명을 부여했습니다.
이 문장은 메서드 정의를 취소합니다.undef 는 메서드 본체 내에 나타날 수 없습니다.
를 사용하여 undef 와 alias의 인터페이스는 부모 클래스에서 독립적으로 수정할 수 있지만, 자신의 내부 메서드 호출 시 프로그램을 파괴할 수 있습니다. 주의하세요.
undef 메서드 이름
이하의 예제는 이름이 bar메서드 정의:
undef bar