讀書筆記 Ruby 元程式設計4

2021-06-17 22:52:06 字數 1506 閱讀 8150

#單件方法

例子

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檔案中的乙個口令...