루비 방법
루비 방법은 다른 프로그래밍 언어 기능과 유사하다. 하나의 단위로 하나 이상의 중복 문을 묶기위한 루비 방법.
메소드 이름은 소문자로 시작해야한다. 은 메소드 이름의 시작으로 대문자 인 경우, 루비 아마도 잘못 호출 분석 결과 상수로서 사용된다.
메소드를 호출하면, 그렇지 않으면 정의되어야하기 전에, 루비는 정의되지 않은 메서드 호출 예외를 생성합니다.
문법
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
매개 변수의 가장 큰 단점을 이용하는 방법은 메소드를 호출 할 때 파라미터의 개수를 기억할 필요가있다. 예를 들어, 두 개의 인수를 전달하는 세 개의 매개 변수 방법을 허용 한 경우, 루비에 오류가 표시됩니다.
예
#!/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
메소드의 반환 값
루비는 각각의 방법은 기본 값을 반환합니다. 이 값은 마지막 문에 의해 반환 된 값입니다. 예를 들면 :
def test i = 100 j = 10 k = 0 end
이 메소드를 호출 할 때 변수 k의 최종 선언을 반환합니다.
루비return 문
return문에 루비는 루비 방법에서 하나 이상의 값을 반환하는 데 사용됩니다.
문법
return [expr[`,' expr...]]
두 개 이상의 표현이 주어지면이 값을 포함하는 배열이 반환 값이됩니다. 어떤 표현이 지정되어 있지 않은 경우는, 전무는 반환 값이됩니다.
예
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
인수의 변수 번호
의 당신이이 메서드를 호출 할 때, 당신은 또한 두 개의 매개 변수를 전달해야, 2 개의 인수를 취하는 방법을 선언한다고 가정 해 봅시다.
그러나 루비는 매개 변수의 변수 번호를 선언 할 수 있습니다. 이제 다음 예를 보자 :
#!/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"
이 코드는 샘플의 방법은, 파라미터 테스트를 허용 선언. 그러나이 매개 변수는 변수 매개 변수입니다. 이 매개 변수는 변수의 상이한 수와 함께 제공 될 수 있다는 것을 의미한다. 위의 예제 출력은 실행
参数个数为 3 参数值为 Zara 参数值为 6 参数值为 F 参数个数为 4 参数值为 Mac 参数值为 36 参数值为 M 参数值为 MCA
클래스 메소드
때 외부 클래스의 기본에 정의 된 방법 방법은개인 표시했습니다.메소드는 클래스에 정의 된 경우, 상기 디폴트 공용으로 표시된다.
가시성과개인태그의 기본 방법은공공또는민간에서모듈 (모듈)을 통해 변경 될 수있습니다.
당신은 클래스 메소드에 액세스하려는 경우, 먼저 클래스를 인스턴스화해야합니다. 그리고, 물체를 사용하여 클래스의 구성원을 액세스 할 수있다.
루비는 인스턴스화 방법없이 액세스 할 수있는 방법을 제공합니다. 의 선언과 클래스 메소드에 액세스하는 방법을 보자 :
class Accounts def reading_charge end def Accounts.return_date end end
우리는 이미 어떻게 방법 RETURN_DATE 문을 알고있다. 이 선언에 도트 후 메소드 이름 뒤에 점 다음에 클래스 이름, 후입니다. 다음과 같이 직접 클래스 메소드에 액세스 할 수 있습니다 :
Accounts.return_date
이 방법에 액세스하려면 개체 클래스 계정을 만들 필요가 없습니다.
루비별명 문
이 문은 별칭에서 방법 또는 전역 변수로 사용된다. 별칭은 메소드 본문 내에서 정의 될 수 없다. 상기 방법은 무시하더라도 별명 방법은 또한, 상기 방법의 현재의 정의를 유지한다.
별명에서 전역 변수 ($ 1, $ 2, ...)의 수는 금지되어 있습니다. 내장 된 글로벌 변수하면 심각한 문제가 발생할 수 있습니다 다시 작성합니다.
문법
alias 方法名 方法名 alias 全局变量 全局变量
예
alias foo bar alias $MATCH $&
여기서 우리는 foo는이 $ & $의 MATCH에 대한 별명을 정의하는 바의 별칭을 정의했습니다.
루비미확정 문
이 문은 메소드 정의를 취소하는 데 사용됩니다.미확정는메서드 본문 내에 표시 할 수 없습니다.
미확정별명 사용하여 클래스 인터페이스는 상위 클래스에서 독립적으로 변형하지만, 그 자신의 내부 메소드를 호출 할 때, 그 프로그램을 훼손 수도 있습니다 수있다.
문법
undef 方法名
예
다음의 예는 명명 된바있어서정의 취소 :
undef bar