多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

中國最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2

ruby教程

Ruby

閱讀 (2172)

Ruby

您已經(jīng)知道 Ruby 如何定義方法以及您如何調(diào)用方法。類似地,Ruby 有一個(gè)塊的概念。

  • 塊由大量的代碼組成。
  • 您需要給塊取個(gè)名稱。
  • 塊中的代碼總是包含在大括號(hào) {} 內(nèi)。
  • 塊總是從與其具有相同名稱的函數(shù)調(diào)用。這意味著如果您的塊名稱為 test,那么您要使用函數(shù) test 來調(diào)用這個(gè)塊。
  • 您可以使用 yield 語句來調(diào)用塊。

語法

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

在這里,您將學(xué)到如何使用一個(gè)簡(jiǎn)單的 yield 語句來調(diào)用塊。您也將學(xué)到如何使用帶有參數(shù)的 yield 語句來調(diào)用塊。在實(shí)例中,您將看到這兩種類型的 yield 語句。

yield 語句

讓我們看一個(gè) yield 語句的實(shí)例:

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

def test
   puts "在 test 方法內(nèi)"
   yield
   puts "你又回到了 test 方法內(nèi)"
   yield
end
test {puts "你在塊內(nèi)"}

嘗試一下 ?


這將產(chǎn)生以下結(jié)果:

 test 方法內(nèi)
你在塊內(nèi)
你又回到了 test 方法內(nèi)
你在塊內(nèi)

您也可以傳遞帶有參數(shù)的 yield 語句。下面是一個(gè)實(shí)例:

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

def test
   yield 5
   puts "在 test 方法內(nèi)"
   yield 100
end
test {|i| puts "你在塊 #{i} 內(nèi)"}

嘗試一下 ?


這將產(chǎn)生以下結(jié)果:

你在塊 5 內(nèi)
 test 方法內(nèi)
你在塊 100 內(nèi)

在這里,yield 語句后跟著參數(shù)。您甚至可以傳遞多個(gè)參數(shù)。在塊中,您可以在兩個(gè)豎線之間放置一個(gè)變量來接受參數(shù)。因此,在上面的代碼中,yield 5 語句向 test 塊傳遞值 5 作為參數(shù)。

現(xiàn)在,看下面的語句:

test {|i| puts "你在塊 #{i} 內(nèi)"}

在這里,值 5 會(huì)在變量 i 中收到。現(xiàn)在,觀察下面的 puts 語句:

puts "你在塊 #{i} 內(nèi)"

這個(gè) puts 語句的輸出是:

你在塊 5 內(nèi)

如果您想要傳遞多個(gè)參數(shù),那么 yield 語句如下所示:

yield a, b

此時(shí),塊如下所示:

test {|a, b| statement}

參數(shù)使用逗號(hào)分隔。

塊和方法

您已經(jīng)看到塊和方法之間是如何相互關(guān)聯(lián)的。您通常使用 yield 語句從與其具有相同名稱的方法調(diào)用塊。因此,代碼如下所示:

#!/usr/bin/ruby

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

本實(shí)例是實(shí)現(xiàn)塊的最簡(jiǎn)單的方式。您使用 yield 語句調(diào)用 test 塊。

但是如果方法的最后一個(gè)參數(shù)前帶有 &,那么您可以向該方法傳遞一個(gè)塊,且這個(gè)塊可被賦給最后一個(gè)參數(shù)。如果 * 和 & 同時(shí)出現(xiàn)在參數(shù)列表中,& 應(yīng)放在后面。

#!/usr/bin/ruby

def test(&block)
   block.call
end
test { puts "Hello World!"}
嘗試一下 ?


這將產(chǎn)生以下結(jié)果:

Hello World!

BEGIN 和 END 塊

每個(gè) Ruby 源文件可以聲明當(dāng)文件被加載時(shí)要運(yùn)行的代碼塊(BEGIN 塊),以及程序完成執(zhí)行后要運(yùn)行的代碼塊(END 塊)。

#!/usr/bin/ruby

BEGIN { 
  # BEGIN 代碼塊
  puts "BEGIN 代碼塊"
} 

END { 
  # END 代碼塊
  puts "END 代碼塊"
}
  # MAIN 代碼塊
puts "MAIN 代碼塊"

一個(gè)程序可以包含多個(gè) BEGIN 和 END 塊。BEGIN 塊按照它們出現(xiàn)的順序執(zhí)行。END 塊按照它們出現(xiàn)的相反順序執(zhí)行。當(dāng)執(zhí)行時(shí),上面的程序產(chǎn)生產(chǎn)生以下結(jié)果:

BEGIN 代碼塊
MAIN 代碼塊
END 代碼塊

關(guān)閉
程序員人生
主站蜘蛛池模板: 网站在线看| 狠久久| 国产精品99爱免费视频 | 一区二区三区免费视频网站 | 黄色亚洲视频 | 视色在线视频 | 亚洲免费不卡 | 国产日产欧产麻豆精品精品推荐 | 欧美精品亚洲精品日韩1818 | 亚洲图片另类 | 国产叼嘿视频在线观看 | 欧美高清videos36opsexhd | 97欧美在线看欧美视频免费 | 亚洲精品成人 | 国内精品一区二区 | 国语精品91自产拍在线观看二区 | 欧美成人一区二区三区在线视频 | 亚洲国产aaa毛片无费看 | 中国毛片网 | 国产成人久久精品二区三区 | 国产麻豆精品在线观看 | 一级毛片一级毛片一级毛片aa | 福利视频一区二区微拍堂 | 另类ts人妖一区二区三区 | 亚洲精品国产77777 | 亚洲在线观看一区 | 欧美国产综合视频 | jizz亚洲| 亚洲精品不卡午夜精品 | 国产成人美女福利在线观看 | 国产啪视频1000部免费视频 | 欧美一级欧美三级在线观看 | 男人把大ji巴放进男人免费视频 | 亚洲性另类| 日本高清在线观看视频www | 久久99久久99精品免观看麻豆 | 无毒三级| 看黄色免费网站 | 欧美精品影院 | 欧美另类激情 | 在线观看国产小视频 |