2012-02-03 28 views
0

我想知道,如果一個人能在Ruby中定義一個類有以下類型的用法:調用方法時的類名稱的使用方式與方法

Class Book 
    def Book 
     puts self.to_s 
    end 
    def initialize(name) 
     @name = name 
    end 
    def to_s 
     @name.to_s 
    end 
end 

用法:

Book "To Kill a Mocking Bird" #=>To Kill a Mocking Bird 

我想要的是這樣的行爲如下

  1. 該方法的一個實例被創建(作爲一個簡寫)。
  2. 在此之後立即調用Book方法並執行一段代碼。

(其命名一樣的類中的方法的目的是有回調時,它的使用方式與方法。)

這可能在Ruby中?

回答

2

這個怎麼樣?

class Book 
    attr_accessor :name 

    def initialize(name) 
    self.name = name 
    end 

    def to_s 
    name 
    end 
end 

def Book(name) 
    Book.new(name) 
end 

puts Book("To Kill a Mocking Bird") 

爲關注一個小點,Ruby's Kernel module使用這種技術(用C語言編寫),以實現名爲ArrayString方法,等等:

Array(12)   #=> [12] 
String(12)   #=> '12' 
Integer('0x12') #=> 18 
+0

這種運作良好,夠簡單。謝謝! – 2012-02-03 04:18:54

+0

@JimPedid,不要忘記upvote /接受良好的答案。您可以閱讀[簡要常見問題文章]中的接受答案(http://stackoverflow.com/faq#howtoask) – 2012-02-03 08:17:28

0

像這樣的東西?

class Book 
    def show_me 
     puts self.to_s 
    end 
    def initialize(name) 
     @name = name 
     show_me 
    end 
    def to_s 
     @name.to_s 
    end 
end 

show_me將被執行,但是一旦你創建了一本新書,書本對象將在最後返回。

>> Book.new "To Kill a Mocking Bird" 
To Kill a Mocking Bird 
=> #<Book:0x74f63f0 @name="To Kill a Mocking Bird"> 
相關問題