Latest web development tutorials

루비 블록

당신은 이미 루비 방법을 정의하는 방법을 당신이 메서드를 호출 방법을 알고있다. 마찬가지로, 루비 블록의 개념을 갖는다.

  • 블럭은 많은 코드로 구성된다.
  • 당신은 블록 이름을해야합니다.
  • 블록의 코드는 항상 {} 안에 중괄호로 묶여 있습니다.
  • 이로부터 항상 동일한 이름의 함수 호출을 차단하고있다. 이이 기능을테스트 블록을호출하는 데 사용할테스트에대한 블록이름은,당신이 원한다면 것을 의미한다.
  • 당신은 블록을 호출 할yield문을 사용할 수 있습니다.

문법

block_name{
   statement1
   statement2
   ..........
}

여기에서 블록을 호출하는 간단한yield문을 사용하는 방법을 배우게됩니다. 또한 호출 된 블록에 매개 변수로항복문을 사용하는 방법을 배우게됩니다. 예, 당신은yield문의 두 가지 유형을 볼 수 있습니다.

yield

예제를 수율 문을 살펴 보자 :

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

def test
   puts "在 test 方法内"
   yield
   puts "你又回到了 test 方法内"
   yield
end
test {puts "你在块内"}

위의 운영 결과의 예는 다음과 같습니다 :

在 test 方法内
你在块内
你又回到了 test 方法内
你在块内

또한 매개 변수를 yield 문을 통과 할 수 있습니다. 다음은 그 예이다 :

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

def test
   yield 5
   puts "在 test 方法内"
   yield 100
end
test {|i| puts "你在块 #{i} 内"}

위의 운영 결과의 예는 다음과 같습니다 :

你在块 5 内
在 test 方法内
你在块 100 内

여기서,yield문은 매개 변수를 다음 후. 당신은 여러 매개 변수를 전달할 수 있습니다. 블록에서는 매개 변수를 허용하는 두 개의 수직 바 사이에 변수를 배치 할 수 있습니다. 따라서, 상기 코드에서, 수율 5 문 5 시험편의 값을 매개 변수로 전달된다.

이제 다음 문을 보면 :

test {|i| puts "你在块 #{i} 内"}

여기, 5의 값은 변수 난을 받게됩니다. 이제, 우리는 다음과 같은 성명을 준수 넣어 :

puts "你在块 #{i} 内"

이것은 출력 문이 둔다 :

你在块 5 内

여러 매개 변수를 전달하려면 다음과 같이 다음yield문은 다음과 같습니다

yield a, b

이때, 블록에 나타낸 바와 같이 :

test {|a, b| statement}

매개 변수는 쉼표로 구분.

블록 및 방법

당신은 블록과 어떻게 상호의 방법 사이 보았다. 통상, 수율 문은 동일한 이름을 갖는 방법에서 블록을 호출 사용한다. 다음 따라서, 코드 :

#!/usr/bin/ruby

def test
  yield
end
test{ puts "Hello world"}

이 예는 블록을 달성하는 가장 간단한 방법입니다. 당신은yield문은 테스트 블록을 호출하여 사용할 수 있습니다.

및 상기 방법으로 전의 마지막 파라미터는 다음 상기 방법은 블록을 전달하고, 수 있다면이 블록은 마지막 매개 변수에 할당 될 수있다. 만약 * 및 또한 매개 변수 목록에 표시, 뒷면에 배치해야합니다.

#!/usr/bin/ruby

def test(&block)
   block.call
end
test { puts "Hello World!"}

위의 운영 결과의 예는 다음과 같습니다 :

Hello World!

BEGIN 및 END 블록

모든 루비 소스 파일 선언 할 때, 코드 블록 (블록 BEGIN) 파일을 실행하는로드 프로그램 후 (END 블록)을 실행하는 코드 블록 실행이 완료 될 때.

#!/usr/bin/ruby

BEGIN { 
  # BEGIN 代码块
  puts "BEGIN 代码块"
} 

END { 
  # END 代码块
  puts "END 代码块"
}
  # MAIN 代码块
puts "MAIN 代码块"

프로그램은 여러 BEGIN과 END 블록을 포함 할 수 있습니다. BEGIN 블록들이 나타나는 순서대로 실행된다. END 블록들은 역순으로 나타나는. 실행될 때, 상기 프로그램은 다음과 같은 결과를

BEGIN 代码块
MAIN 代码块
END 代码块