[code="ruby"]class T
private_class_method :new
attr_reader :user
attr_reader :password
def self.create(user,password)
@user=user
@password=password
self
end
end
t=T.new("Hooopo","Password")
t.user #return no method error[/code]
大家看看问题出在哪里?应该怎么改呢?
[b]问题补充:[/b]
是这样的
[code="ruby"]class T
private_class_method :new
attr_reader :user
attr_reader :password
def self.create(user,password)
@user=user
@password=password
self
end
end
t=T.create("Hooopo","Password")
t.user #return no method error[/code]
[code="ruby"]
class T
attr_reader :user
attr_reader :password
def initialize(user,password)
@user=user
@password=password
end
private_class_method :new
def self.create(user,password)
new(user,password)
end
end
t=T.create("Hooopo","Password")
t.user
[/code]
你的T中没有usr这个对象的方法啊,只要添加一个usr方法就行了
t=T.new("Hooopo","Password")
这里写的不对,是T.create("Hooopo","Password")吧
create返回的self是T这个类对象 而不是T类的实例对象,自然无法调用user方法。
不知道你到底想干嘛
[code="ruby"]
class T
private_class_method :new
(class<<self;self;end).class_eval do
attr_accessor :user
attr_accessor :password
end
def self.create(user,password)
self.user=user
self.password=password
self
end
end
t=T.create("Hooopo","Password")
puts t.user
[/code]