【发布时间】:2015-04-26 10:58:59
【问题描述】:
举一个Java例子:
class MyClass {
private final int variable;
MyClass(int variable) {
this.variable = variable;
}
}
我可以在 Ruby 中做类似final 的事情吗?我查了freeze,但不确定这是否是正确的方法。我不需要在创建类的新实例时分配变量,我需要在其中一种方法中设置它,一旦设置好我想冻结它。
【问题讨论】:
-
“我需要在其中一种方法中设置它,一旦设置好我想冻结它。”那你为什么不能这样做呢?冻结只是一个方法调用,所以在你需要的地方调用它。
-
当我在 irb 中尝试时,冻结似乎不起作用。
a=20; a.freeze; a+=10;然后p a打印 30 -
Fixnums 是不可变的,因此不可冻结。你真的想要一个常数;常量在 Ruby 中不像在 Java 中那样是 final 的,但它们通常被这样对待。
标签: ruby