Char::Reader在标准库中定义为Struct
。选择Struct
而不是Class
背后的原因是什么?
答案 0 :(得分:1)
我认为这是出于性能原因而选择的。根据{{3}}:
结构主要用于性能原因,以避免在传递小副本时大量小内存分配可能更有效。
那么如何在结构和类之间进行选择?经验法则是,如果没有重新分配实例变量,即你的类型是不可变的,你可以使用结构,否则使用类。
Char::Reader
是可变的(因为重新分配了实例变量),但即使reader
是一个结构,它似乎足够安全,可以执行编译器内部工作:
reader = Char::Reader.new(pattern)
while reader.has_next?
char = reader.current_char
reader = check_char reader, char
reader.next_char
end