我就是新手中的战斗机,每天一个菜问题。
问题来源:《web 敏捷开发 第三版》115 页,创建一个 salt 值。
def create_new_salt self.salt = self.objectt_id.to_s + rand.to_s end
rand 是个无参的方法,rand.to_s 将随机的数值转化为 string
self.object_id.to_s 是什么意思呢?id 是对象的属性啊,个人感觉应该用实例方法来访问对象的属性,为什么要用类方法?
求赐教。
新手回答: 因为所有的类其实都是 Class 类的实例。
self 就是调用实例本身,本来就是实例的属性。对象和实例在一定程度上是一个意思,是动态生成的。
亲,self 一定是类吗?self 是看传进来的对象和作用域的
#3 楼 @Anleb @bony @yesmeck
请问各位,此段代码是不是在实例方法中调用类方法?
#4 楼 @xiaoronglv 不是了,你误解 self 的意思了,self 表示当揃的方法接收者而已. 这个 salt 前面的 self 必须要,但 object_id 前面的不是必须的, 所以写成 self.salt = object_id.to_s + rand.to_s 应该木有问题。
#4 楼 @xiaoronglv 完全不是,你的 self 是你的对象,因为你的这个方法是一个实例方法,所以传进来的所有都是 对象实例,并不是类本身。建议你看看 元编程
#6 楼 @Anleb 今天晚上又重新看了 self
原来 self 在实例方法中:指对象 在类方法中:指类 在 module 中:指 module
感谢各位。