Ruby中的方法是一個有名稱的代碼塊,是與一個或多個對象關聯的參數化的代碼。調用時須給出方法名,接收者(所在對象),參數值,且最后一個表達式的值做為返回值。與Ruby方法相似的是代碼塊,它沒有名字,且調用時只通過迭代器或被間接調用。
(一)方法
(1)定義方法
定義方法就是
代碼如下:
def 方法名(參數列表)
方法體
end
最后一個表達式做為返回值返回,如果有值,則返回;無值則返回nil??梢允÷詒eturn。
在類中定義的方法為實例方法,實例方法可以在類的實例對象上使用。如果是在一個特定的對象上定義方法,那么此方法就是一個單鍵方法,只能在這個對象上使用。
代碼如下:
class Test
def instance_method_test(v)
puts "#{v}: instance method"
end
end
t1=Test.new
t2=Test.new
t1.instance_method_test("t1")
t2.instance_method_test("t2")
def t1.singleton_method_test(v)
puts "#{v}:singleton method"
end
t1.singleton_method_test("t1")
#t2.singleton_method_test("t2")
在ruby中,方法一般小寫字母開頭,如果超過一個單詞,則由下劃線隔開(看習慣)。有意思的是方法名可以以等號、問號、嘆號結尾,且有不同的意義:以等號(=)結尾表示這是一個賦值方法(寫屬性);以問號(?)結尾表示一個斷言方法,可以回答調用者提出問題的值,例如判斷大?。粐@號(!)結尾表示是一個可變方法,可能會影響到對象的狀態,要小心使用。這三個符號很有意思,但它們不是必須的。
(2)取消方法
通過undef 方法名 可以取消方法。對于被繼承的方法,undef可以取消子類中的繼承來的方法,但不會取消父類中的此方法。
(3)方法參數
在參數中添加等號和值就可以為這一個參數設置默認值。如果參數有默認值,那么在調用方法時,可以為這個參數指定值或不指定值。
代碼如下:
def createRole(name,level=1)
puts "role name is#{:name} level is #{level}"
end
createRole("way")
createRole("clound",5)
通過在參數前邊加星號(*),可以為方法指定為可變參數個數(數組參數),且指定的個數最多為一個。
代碼如下:
def add_Person(*users)
puts users
end
add_Person("a1","a2")
add_Person("a1","a2","a3")
如果要把數組傳遞給方法,要在數組前加星號(*)。
(二)代碼塊
方法調用后可以緊跟一個代碼塊,關聯代碼塊的方法可以通過yield來調用。
代碼如下:
def showMessage(i)
新聞熱點
疑難解答