#定義方法
def method
puts 'method'
end#呼叫時可以帶或不帶()均可
method #method
method() #method
#使用引數
def methoduseargs(arg1,arg2)
print arg1,arg2
end#呼叫時可以帶或不帶()均可
methoduseargs('hello',"world/n")#helloworld
methoduseargs 'hello',"world/n" #helloworld
#使用預設引數
def methodusedefaultargs(arg1,arg2="world/n")
print arg1,arg2
endmethodusedefaultargs("hello")#helloworld
#使用可變長度的引數
def methodusevariablelenthargs(*args)
puts "#"
endmethodusevariablelenthargs('hello','world ')#hello world
#使用塊block
def methoduseblock(arg)
if block_given?
yield arg
else
argend
endputs methoduseblock("no block")#no block
puts methoduseblock("no block")# block
#使用&將塊轉為proc物件
class sampclass
def sampclass.methodconvertblock2proc(&proc)
@@proc=proc
enddef sampclass.executeproc(amount)
puts "pi*#->#"
endend
sampclass.methodconvertblock2proc
sampclass.executeproc(5) #pi*5->15.707963267949
sampclass.executeproc(20) #pi*20->62.8318530717959
#ruby中的方法有個有趣的地方是可以返回多個值
def methodreturn2variable
return '3q','ruby'
endresult1,result2=methodreturn2variable
puts result1,result2 #3q ruby
#呼叫時護展陣列
def method3args(arg1,arg2,arg3)
print arg1,arg2,arg3,"/n"
endmethod3args(1,2,3) #123
method3args(*[1,2,3]) #123
method3args 1,*[2,3] #123
method3args *(1..3).to_a #123
#更一般更靈活的是使用lambda將乙個塊轉換為乙個proc物件
proc1=lambda
puts proc1.class #proc
#下面的兩種寫法是等價的
puts (1..10).collect.join(' ')#2 4 6 8 10 12 14 16 18 20
puts (1..10).collect(&proc1).join(' ')#2 4 6 8 10 12 14 16 18 20
#使用雜湊表
def methosusehash(hashtable)
hashtable.collect value:#/n"}
endmethosusehash()#key:value value:v key:key value:k
#可以省略{}
methosusehash("key"=>"k","value"=>"v") #同上
#更進一步可以省略""號
methosusehash(:key=>:k,:value=>:v) #同上
Ruby學習筆記2(方法 塊 模組)
ruby中的方法就是其他語言中的函式,名稱應以小寫開頭,以免被解釋為常量。引數可有可無,可以有預設值也可以沒有。每個方法都有預設的返回值,就是最後乙個語句的值。def test a1 ruby a2 perl puts 程式語言為 puts 程式語言為 endtest c c test要傳入數量可變...
Ruby學習筆 06 方法
ruby 方法與其他程式語言中的函式類似。ruby 方法用於 乙個或多個重複的語句到乙個單元中。方法名應以小寫字母開頭。如果您以大寫字母作為方法名的開頭,ruby 可能會把它當作常量,從而導致不正確地解析呼叫。方法應在呼叫之前定義,否則 ruby 會產生未定義的方法呼叫異常。def method n...
Golang(Go 語言)入門學習 7 方法
go 沒有類。不過你可以為結構體型別定義方法。方法就是一類帶特殊的 接收者 引數的函式。方法接收者在它自己的引數列表內,位於 func 關鍵字和方法名之間。在此例中,abs 方法擁有乙個名為 v,型別為 vertex 的接收者。package main import fmt math type ve...