ruby學習筆記 7 方法

2021-04-12 14:05:49 字數 2099 閱讀 6275

#定義方法

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...