在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Ruby/ Ruby 塊
Ruby 方法
Ruby 語法
Ruby 注釋
Ruby 簡介
Ruby 數據庫訪問 - DBI 教程
Ruby 安裝 - Unix
Ruby 數據類型
Ruby 異常
Ruby 類案例
Ruby 命令行選項
Ruby CGI Sessions
Ruby 類和對象
Ruby 環(huán)境
Ruby 面向對象
Ruby 變量
Ruby Dir 類和方法
Ruby CGI方法
Ruby 塊
Ruby JSON
Ruby File 類和方法
Ruby 安裝 - Windows
Ruby 判斷
Ruby CGI編程
Ruby 發(fā)送郵件 – SMTP
Ruby XML, XSLT 和 XPath 教程
Ruby 迭代器
Ruby 數組
Ruby 模塊
Ruby 正則表達式
Ruby CGI Cookies
Ruby Web Services 應用 - SOAP4R
Ruby 循環(huán)
Ruby 多線程
Ruby Socket 編程
Ruby 環(huán)境變量
Ruby 日期 & 時間
Ruby 范圍
Ruby 字符串
Ruby 哈希(Hash)
Ruby 運算符
Ruby 文件的輸入與輸出

Ruby 塊

您已經知道 Ruby 如何定義方法以及您如何調用方法。類似地,Ruby 有一個塊的概念。

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

語法

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

在這里,您將學到如何使用一個簡單的 yield 語句來調用塊。您也將學到如何使用帶有參數的 yield 語句來調用塊。在實例中,您將看到這兩種類型的 yield 語句。

yield 語句

讓我們看一個 yield 語句的實例:

    #!/usr/bin/ruby

    def test
       puts "You are in the method"
       yield
       puts "You are again back to the method"
       yield
    end
    test {puts "You are in the block"}

這將產生以下結果:

    You are in the method
    You are in the block
    You are again back to the method
    You are in the block

您也可以傳遞帶有參數的 yield 語句。下面是一個實例:

    #!/usr/bin/ruby

    def test
       yield 5
       puts "You are in the method test"
       yield 100
    end
    test {|i| puts "You are in the block #{i}"}

這將產生以下結果:

    You are in the block 5
    You are in the method test
    You are in the block 100

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

現在,看下面的語句:

    test {|i| puts "You are in the block #{i}"}

在這里,值 5 會在變量 i 中收到?,F在,觀察下面的 puts 語句:

    puts "You are in the block #{i}"

這個 puts 語句的輸出是:

    You are in the block 5

如果您想要傳遞多個參數,那么 yield 語句如下所示:

    yield a, b

此時,塊如下所示:

    test {|a, b| statement}

參數使用逗號分隔。

塊和方法

您已經看到塊和方法之間是如何相互關聯的。您通常使用 yield 語句從與其具有相同名稱的方法調用塊。因此,代碼如下所示:

    #!/usr/bin/ruby

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

本實例是實現塊的最簡單的方式。您使用 yield 語句調用 test 塊。

但是如果方法的最后一個參數前帶有 &,那么您可以向該方法傳遞一個塊,且這個塊可被賦給最后一個參數。如果 * 和 & 同時出現在參數列表中,& 應放在后面。

    #!/usr/bin/ruby

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

這將產生以下結果:

    Hello World!

BEGIN 和 END 塊

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

    #!/usr/bin/ruby

    BEGIN {
      # BEGIN block code
      puts "BEGIN code block"
    }

    END {
      # END block code
      puts "END code block"
    }
      # MAIN block code
    puts "MAIN code block"

一個程序可以包含多個 BEGIN 和 END 塊。BEGIN 塊按照它們出現的順序執(zhí)行。END 塊按照它們出現的相反順序執(zhí)行。當執(zhí)行時,上面的程序產生產生以下結果:

    BEGIN code block
    MAIN code block
    END code block