方法
Ruby中的方法就是其他語言中的函數(shù)臣淤,名稱應(yīng)以小寫開頭橄霉,以免被解釋為常量。參數(shù)可有可無邑蒋,可以有默認(rèn)值也可以沒有姓蜂。每個(gè)方法都有默認(rèn)的返回值,就是最后一個(gè)語句的值医吊。
def test(a1="Ruby", a2="Perl")
puts "編程語言為 #{a1}"
puts "編程語言為 #{a2}"
end
test "C", "C++"
test
要傳入數(shù)量可變的參數(shù):
def sample (*test)
end
alias和undef的用法還不太清楚
塊
塊是一段包含在{}內(nèi)的代碼
這段代碼可以從別處調(diào)用钱慢。甚至像塊來傳遞參數(shù)都是可以的,一個(gè)或多個(gè)參數(shù)卿堂。
def test
yield 5
puts "在 test 方法內(nèi)"
yield 100
end
test {|i| puts "你在塊 #{i} 內(nèi)"}
另一種作為函數(shù)參數(shù)的調(diào)用方法:
def test(&block)
block.call
end
test { puts "Hello World!"}
在參數(shù)前面加上&代表接收一個(gè)塊作為函數(shù)的參數(shù)束莫。這個(gè)參數(shù)一般放在最后,特別是同時(shí)有*參數(shù)出現(xiàn)時(shí)草描。
可以聲明BEGIN和END塊览绿,這將在文檔被加載和程序運(yùn)行完畢后被調(diào)用。
模塊
模塊存在的目的主要就是定義一個(gè)命名空間,使這個(gè)命名空間里的方法和常量不會(huì)和其他地方有沖突。
模塊定義和類定義很像寄猩,模塊方法和類方法定義也很像怜浅,調(diào)用模塊方法就是模塊名點(diǎn)上方法名郑气。調(diào)用模塊常量使用模塊名雙冒號(hào)常量名壳影。
module Trig
PI = 3.141592654
def Trig.sin(x)
# ..
end
def Trig.cos(x)
# ..
end
end
require語句用于引用已經(jīng)有的模塊贝奇。
include用于在類中嵌入模塊芝此。
module A
def a1
end
def a2
end
end
module B
def b1
end
def b2
end
end
class Sample
include A
include B
def s1
end
end
samp=Sample.new
samp.a1
samp.a2
samp.b1
samp.b2
samp.s1
這個(gè)例子用一種奇妙的方法實(shí)現(xiàn)了Sample對(duì)A瓢对,B的多繼承寿酌。