Latest web development tutorials

Рубин Блок

Вы уже знаете, как определить метод Ruby, и как вы вызовите метод. Кроме того, Ruby имеет концепцию блока.

  • Блок состоит из большого количества кода.
  • Вам нужно взять имя блока.
  • Блок-код всегда заключен в фигурные скобки {} внутри.
  • Из чего она всегда блокирует вызов функции с тем же именем. Это означает , что если ваше имя блока длятеста,то вы хотите использовать для вызова этойтестовойфункции блока.
  • Вы можете использовать операторвыход, чтобы вызвать блок.

грамматика

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

Здесь вы узнаете , как использовать простой операторвыход, чтобы вызвать блок. Вы также узнаете , как использовать оператордоходностис параметрами к вызываемому блоку. В примере, вы увидите два типа заявлениядоходности.

заявлениевыход

Давайте посмотрим на пример оператора доходности:

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

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

Примеры вышеуказанных операционных результатов в следующем порядке:

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

Вы также можете передать заявление выход с параметрами. Вот пример:

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

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

Примеры вышеуказанных операционных результатов в следующем порядке:

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

Здесь, после того, как операторвыходаследуют параметры. Вы можете даже передать несколько параметров. В блоке, вы можете поместить переменную между двумя вертикальными черточками, чтобы принять параметры. Таким образом, в приведенном выше коде, выход 5 оператор передается в качестве параметра к значению 5 испытательных образцов.

Теперь посмотрим на следующее заявление:

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

Здесь, значение 5 получит переменную I. Теперь мы помещаем соблюдать следующее заявление:

puts "你在块 #{i} 内"

Это ставит выход утверждение:

你在块 5 内

Если вы хотите передать несколько параметров, то оператордоходностивыглядит следующим образом :

yield a, b

В это время, как показано в блоке:

test {|a, b| statement}

Параметры разделяются запятыми.

Блоки и методы

Вы видели между блоком и способа, как связаны между собой. Как правило, используется оператор выхода вызывает блок из метода с тем же именем. Таким образом, код выглядит следующим образом:

#!/usr/bin/ruby

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

Этот пример является самым простым способом для достижения блока. Вы можете использовать операторвыходвызывает контрольный блок.

Но если последний параметр перед методом с &, то вы можете метод передается блок, и этот блок может быть назначен последним параметром. Если * и & также появляются в списке параметров, и должны быть размещены на задней панели.

#!/usr/bin/ruby

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

Примеры вышеуказанных операционных результатов в следующем порядке:

Hello World!

Начинайте и заканчивайте блоки

Каждый исходный файл Рубин может объявить, когда блоки кода (НАЧАТЬ блок) при загрузке файла для запуска, а также после завершения программы завершает выполнение блоков кода для запуска (конец блока).

#!/usr/bin/ruby

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

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

Программа может содержать несколько Начинайте и заканчивайте блоки. НАЧАТЬ блок выполняется в том порядке, в котором они появляются. END блоки, как они появляются в обратном порядке. При выполнении выше программа дает следующие результаты:

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