问题描述:如何理解这段文字描述的“这个类被存储在一个名为@time_class的类实例变量中”,我的理解是这个类实例变量是@time_class是一直都是 nil,并没有被赋值,同时行文中提到的空指针模式一般指的是 a|| = [] 的形式,或者 a = a||[] 的形式,难道在调用类方法的时候,因为@time_class为 nil,会给这个类实例变量赋值?
目测是 @time_class ||= Time,可能是翻译时漏写了。
@time_class ||= Time
#1 楼 @alixiaomiao 我看过第二版英文版,里面也是我文中提到的写法。
最后一个表达式的值会成为返回值。
@time_class || Time
是一个或表达式。
空指针保护不一定要给 @time_class 赋值,只要保证 time_class 这个类方法不会返回 nil,中断程序就行。
感觉是写错了,否则就是代码有一部分没交代清楚
#5 楼 @48hour 是 ruby metaprogramming 第一版的内容,我查看了最新的第二版,代码还是老样子。
我看了书,原书这样实现是为了方便测试,不测试的时候@time_class永远为空
#7 楼 @48hour 那这句话应该是错得了““这个类被存储在一个名为@time_class的类实例变量中”