【发布时间】:2013-11-21 17:45:24
【问题描述】:
我面临的问题是我需要防止 Ruby 类在定义后被操纵。我可以冻结它,但这并不能阻止人们一起覆盖它。
我意识到有些人会想用某种“Ruby 不适合这样使用”的口头禅来回应。我明白了,但我的情况很特别。这适用于 codewars.com,其中用户提交的解决方案与自定义测试框架相结合,因此我需要阻止用户提交的代码修改 Test 类。
我曾认为根本不可能使常量成为真正的常量,但我注意到 $?全局变量是这样的。可能是因为它内置于语言中,而不是可以使用自定义变量完成的事情。
【问题讨论】:
-
$? ?你走得太远了。看看
true、false和nil。这些人不能被分配。 -
如果你想让你的类免受操纵 - 只需在解析所有用户代码后定义它。