在 irb 命令行里输入
1 | >> X = 1 |
你会看到上面那行警告, 已经初始化过常量 X
, ruby 是在提醒你常量是不应该被改变的, 不过 ruby 只是在抱怨一句罢了, 实际上 X 的值已经由 1 变成 2 了.
警告是对的, 常量的再次赋值有违原则. 但是人总会碰到情非得已的时候.
ruby 论坛上有篇贴子也提到了这一问题, 沙发搞笑的说忽略事情最简单的方式就是闭上眼睛. 不过五楼是正经人, 给出了解决问题的思路. 顺着思路就想到了这个方法.
ruby 接受 -W 作为参数.
1 | ruby -h |
运行时对应的是全局变量 $-v
- nil -W0
- false -W1
- true -W2
这样事情就变得简单了.
1 | def suppress_warning &block |
试试效果
1 | >> X = 1 |
嗯, 感觉不错, 你也是不清理不舒服斯基吗?