level 14
new会调用class的initialize方法,new()里面的参数会传递给initialize()作为参数。
但是LZ这代码里面根本就没定义initialize方法,那么参数没地方去,自然就出问题。
如果是写不带参数的 b=A.new 就没问题。
2018年03月29日 02点03分
3
level 14
class A
def initialize(x)
@x=x
end
end
b=A.new(10)
这样就不会报这种参数错。
2018年03月29日 02点03分
4
我把方法名用其他名字指定,不用initialize不能带参数吗?如果要指定其他名又该怎么写?求指教谢谢
2018年03月29日 12点03分
@123木头人😏 还有一种是所谓的“工厂方法”可以生成新对象,其实new也可以算这一类。
2018年03月29日 13点03分
level 14
class A
def initialize(x=10)
@x=x
end
end
a=A.new
b=A.new(10)
这种写法,两个初始化都对,都没有参数错。
2018年03月29日 02点03分
5
level 14
另外,如果没有定义对应的to_s,puts就没有意义。
2018年03月29日 03点03分
6
self是啥玩意?
2018年04月06日 23点04分