我想知道是否可以在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
我想要的想法是这样的行为如下
(使用与类相同的方法的目的是在像方法一样使用时回调。)
这可以在Ruby中使用吗?
答案 0 :(得分: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编写)来实现名为Array
,String
的方法,等等:
Array(12) #=> [12]
String(12) #=> '12'
Integer('0x12') #=> 18
答案 1 :(得分: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">