我想知道是否可以在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中有可能吗?
发布于 2012-02-03 03:04:38
这个怎么样?
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发布于 2012-02-03 02:47:09
像这样吗?
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
endshow_me将被执行,但是一旦您创建了一本新书,图书对象将在最后返回。
>> Book.new "To Kill a Mocking Bird"
To Kill a Mocking Bird
=> #<Book:0x74f63f0 @name="To Kill a Mocking Bird">https://stackoverflow.com/questions/9122973
复制相似问题