首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Ruby 區塊與 yield 完整指南:語法、參數傳遞、BEGIN/END 區塊

     編輯:更多程式設計知識

區塊是 Ruby 獨特且強大的特性,配合 yield 實現回呼模式。本文說明區塊語法、yield 參數傳遞、區塊與方法關聯、&參數 显式轉換、以及 BEGIN/END 區塊。

區塊語法

區塊名 { 陳述式1; 陳述式2; ... }
# 或
區塊名 do
  陳述式1
  陳述式2
end

yield 基本用法

#!/usr/bin/ruby
def test
  puts "在方法中"
  yield
  puts "回到方法"
  yield
end

test { puts "在區塊中" }
# 輸出:
# 在方法中
# 在區塊中
# 回到方法
# 在區塊中

帶參數的 yield

#!/usr/bin/ruby
def test
  yield 5
  puts "在方法 test 中"
  yield 100
end

test { |i| puts "在區塊中 #{i}" }
# 輸出:
# 在區塊中 5
# 在方法 test 中
# 在區塊中 100

多參數:yield a, b → 區塊 { |a, b| ... }。

區塊與方法關聯

同名方法以 yield 呼叫區塊:

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

顯式區塊參數(&block)

最後一個參數前加 &,區塊轉為 Proc 物件:

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

BEGIN / END 區塊

檔案層級的掛鉤:

  • BEGIN:檔案載入時執行,按遇到順序
  • END:程式結束前執行,按相反順序
#!/usr/bin/ruby
BEGIN { puts "BEGIN 區塊" }
END { puts "END 區塊" }
puts "MAIN 區塊"
# 輸出:
# BEGIN 區塊
# MAIN 區塊
# END 區塊
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved