溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Ruby基礎(chǔ)代碼的示例分析

發(fā)布時(shí)間:2022-01-11 15:15:29 來源:億速云 閱讀:134 作者:柒染 欄目:編程語言

Ruby基礎(chǔ)代碼的示例分析,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

Ruby語言的學(xué)習(xí)和其他編程語言一樣,首先要從基礎(chǔ)開始。在這里我們?yōu)榇蠹医榻B了一下Ruby基礎(chǔ)代碼中的BEGIN和END的編寫方式。

Ruby基礎(chǔ)代碼之BEGIN 塊

BEGIN 塊中的代碼在所有代碼執(zhí)行之前執(zhí)行,Ruby 允許設(shè)置多個(gè) BEGIN 塊并按出現(xiàn)的順序執(zhí)行塊中的代碼。C# 程序員注意下面的代碼

  1. BEGIN  

  2. {  

  3. print "OnInit(object sender, 
    EventArgs args)\n"  

  4. }  

  5. BEGIN  

  6. {  

  7. print "OnLoad(object sender, 
    EventArgs args)\n"  

  8. }  

  9. print "Running" 

上面的代碼看上去很美吧,可惜的是上面的代碼段會(huì)出現(xiàn) parse error,正確的代碼應(yīng)該是

  1. BEGIN{  

  2. print "OnInit(object sender, 
    EventArgs args)\n"  

  3. }  

  4. BEGIN{  

  5. print "OnLoad(object sender,
     EventArgs args)\n"  

  6. }  

  7. print "Running" 

正如上面的代碼段所呈現(xiàn)的,只有當(dāng)起始大括號(hào)和 BEGIN 標(biāo)識(shí)符位于同一行時(shí)塊內(nèi)的代碼才能得到正確的執(zhí)行。同時(shí) BEGIN 塊也不受任何控制結(jié)構(gòu)的影響,因?yàn)橹灰霈F(xiàn) BEGIN 塊就會(huì)得到執(zhí)行并且只執(zhí)行一次。

  1. i = 0 

  2. while i < 10 

  3. # 雖然處理循環(huán)結(jié)構(gòu)中,但 BEGIN 
    塊內(nèi)的代碼仍然只執(zhí)行一次  

  4. BEGIN{  

  5. print "OnInit(object sender, 
    EventArgs args)\n"  

  6. }  

  7. i += 1  

  8. end  

  9. if false  

  10. # BEGIN 完全不受 if 的影響,
    只要出現(xiàn) BEGIN 塊就會(huì)得到執(zhí)行  

  11. BEGIN{  

  12. print "OnLoad(object sender,
     EventArgs args)\n"  

  13. }  

  14. end  

  15. print "Running" 

基于只要現(xiàn)出 BEGIN 就會(huì)得到執(zhí)行和 BEGIN 在所有代碼執(zhí)行之前執(zhí)行的原則,即使 BEGIN 塊前出現(xiàn)了代碼,該代碼仍然會(huì)等待 BEGIN 塊執(zhí)行之后再執(zhí)行。比如下面的代碼段輸出結(jié)果仍然是 OnInit - OnLoad - Running。

  1. print "OnLoad(object sender, 
    EventArgs args)\n"  

  2. BEGIN{  

  3. print "OnInit(object sender,
     EventArgs args)\n"  

  4. }  

  5. print "Running" 

Ruby基礎(chǔ)代碼之END 塊

END 塊與 BEGIN 塊相反,在所有代碼執(zhí)行之后執(zhí)行,多個(gè) END 塊時(shí)最先出現(xiàn)的 END 塊最后執(zhí)行。除此之外,END 塊雖然不受 while 的影響,但是可能通過 if 來控制 END 塊的執(zhí)行與否。比如下面代碼的輸出結(jié)果就是 Start - Load - Unload。

if false  END{  # 永遠(yuǎn)不輸出  print "Init"  }  end  END{  # 最后輸出  print "Unload\n"  }  END{  # 先于 Unload 輸出  print "Load\n"  }  # 最先輸出  print "Start\n"

關(guān)于Ruby基礎(chǔ)代碼的示例分析問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)
推薦閱讀:
  1. ruby 的while
  2. ruby的if判斷

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI