#單件方法
例子
c = class.new(array)
c.send :define_method, :my_method do
'hello!'
endmyclass = c
# puts c.name
obj = myclass.new
# puts obj.my_method
#給obj物件定義單件方法,而這個方法只屬於obj自己。
def obj.print_my_method
puts self.my_method
endobj.print_my_method
例子2:更換舊方法
class myclass
def print_to(name)
puts "print to #"
enddef self.deprecate(old_method,new_method)
define_method old_method do |*args,&block|
warn "warning : #() is deprecate. use #"
send(new_method,*args,&block)
endend
deprecate :print_to_name , :print_to
endobj = myclass.new
# obj.print_to("bill")
obj.print_to_name("bill")
extend 類擴充套件
attr_accessor 生成屬性 等同 attr_reader 與 attr_writer 集合
例子
module mymodule
def my_method ;'hello';end
endclass myclass
attr_accessor :v
extend mymodule
def eign
class << self
self
endend
endputs myclass.my_method
puts myclass.new.eign.my_method
obj = myclass.new
obj.v = 2
puts obj.v
alias #別名 #環繞別名
require 'test/unit'
class fixnum
alias :origin_add :+
def +(num)
origin_add( num ).origin_add 1
endendclass mytest < test::unit::testcase
def test_math
assert_equal 3 , 1 + 1
endend
Ruby元程式設計 讀書筆記 第1章
元程式設計是編寫能寫 的 語言構件 language construct 包含各種成員 變數 類 方法等 以c 為例,一旦編譯器完成了工作,變數和函式這樣的東西就變得看不見摸不著了,它們只存在於記憶體中。你沒有辦法向乙個類詢問它的例項方法,因為當你問出這個問題時,它可能已經消失了。對於c 這樣的語言...
Linux網路程式設計讀書筆記 4
第四章 基本套接字程式設計 4.1 基本套接字函式族 標頭檔案 主要函式 int socket int domain,int type,int protocol 建立socket 描述符 domain af unix,af i af iso type sock stream,sock dgram,s...
Unix環境高階程式設計讀書筆記(4)
1 讀取 etc passwd的函式 etc passwd 每一行 使用者登入名 加密口令 使用者id 使用者組id 注釋字段 起始目錄 shell void setpwent void 將獲取口令重置到第乙個 struct passwd getpwent void 獲取passwd檔案中的乙個口令...