Ruby語言基礎學習五:Ruby 方法、塊
阿新 • • 發佈:2019-02-14
#-*-coding:UTF-8 -*- #Ruby方法 def test(a1="Ruby",a2="Perl") #設定預設引數,也可不設 puts a1 puts a2 end test "C","C++" #加引數,不用括號 test #直接不用引數 # Ruby 中的每個方法預設都會返回一個值。這個返回的值是最後一個語句的值。 def test2 i=100 k="Is me" end j=test2 puts j # Ruby 中的 return 語句用於從 Ruby 方法中返回一個或多個值。 def test3 i=1 j=2 k=3 return i,j,k end var=test3 puts var # Ruby 允許您宣告引數數量可變的方法。 def sample(*niu) #可變引數個數 puts "引數個數為 #{niu.length}" #niu.length求總數 for i in 0...niu.length #這裡面三個點在開始是0的地方很有用 puts "引數值為 #{niu[i]}" #可以用索引引用 end end sample "Zara", "6", "F" sample "Mac", "36", "M", "MCA" # 當方法定義在類的外部,方法預設標記為 private。另一方面,如果方法定義在類中的,則預設標記為 public。 class Accounts def reading_charge #這個必須先例項化再引用 puts "first" end def Accounts.return_data #這個算和類常量一樣的東西 puts "Second" end end Accounts.return_data # Ruby alias 語句 # 這個語句用於為方法或全域性變數起別名。別名不能在方法主體內定義。 # 為編號的全域性變數($1, $2,...)起別名是被禁止的。重寫內建的全域性變數可能會導致嚴重的問題。 def bar end alias foo bar #為 bar 定義了別名為 foo alias $MATCH $& # Ruby undef 語句 # 這個語句用於取消方法定義。undef 不能出現在方法主體內。 undef bar # 塊由大量的程式碼組成。可以增加程式碼複用 # 塊總是從與其具有相同名稱的函式呼叫。這意味著如果您的塊名稱為 test,那麼您要使用函式 test 來呼叫這個塊。 # 您可以使用 yield 語句來呼叫塊。 # 傳遞帶有引數的 yield 語句可以傳遞多個引數 def test5 yield 5,5 puts "在test方法內" yield 100 #這裡一個引數居然還能不報錯 end test5 do |i,j| puts "你在塊#{i} #{j}內" end #這些竟然可以不呼叫自己執行,我加了test4呼叫會報錯 def test4 puts "在 test 方法內 " yield #呼叫,把什麼東西喊出來 puts "你又回到了 test方法內" yield #這個程式喊了兩次 end test4{puts "我回來啦"} #呼叫 # 但是如果方法的最後一個引數前帶有 &,那麼您可以向該方法傳遞一個塊,且這個塊可被賦給最後一個引數。如果 * 和 & 同時出現在引數列表中,& 應放在後面。 def test6 (&block) block.call #可以用這個呼叫塊 end test6{puts "hello world!"} # 每個 Ruby 原始檔可以聲明當檔案被載入時要執行的程式碼塊(BEGIN 塊),以及程式完成執行後要執行的程式碼塊(END 塊)。 BEGIN{ puts "BEGIN 程式碼塊" } END{ puts "END程式碼塊" } puts "MAIN 程式碼塊" # 一個程式可以包含多個 BEGIN 和 END 塊。BEGIN 塊按照它們出現的順序執行。END 塊按照它們出現的相反順序執行。