你的代碼是越來越錯誤
ArgumentError: wrong number of arguments (0 for 1..4)
但對於其他類似的模塊功能,你可以這樣定義
methods_to_block = ["rand", "srand","seed", "sample", "shuffle!", "shuffle!"]
方法應該看起來像
methods_to_block.each do |method|
define_method "#{method}" do
raise ERROR_STRING_FOR_RANDOM
end
end
#=> ["rand", "srand", "Random::rand", "Random::srand", "Random::seed", "Random::new", "Kernel::rand", "Kernel::srand", "Array::shuffle", "Array::shuffle!", "Array::sample"]
現在,如果您致電
> srand
RuntimeError: Usage of built-in random generators is not allowed
> rand
RuntimeError: Usage of built-in random generators is not allowed
希望它會幫助你
如果你想堅持保持自己的方式
ERROR_STRING_FOR_RANDOM = "Usage of built-in random generators is not allowed"
methods_to_block = ["rand", "srand", "Random::rand", "Random::srand",
"Random::seed", "Random::new", "Kernel::rand", "Kernel::srand",
"Array::shuffle", "Array::shuffle!", "Array::sample"]
methods_to_block.each do |method|
if method.split("::").size > 1 && method.split("::").first != "Kernel"
class_name = method.split("::").first
method_name = method.split("::").last
er = <<ER
class #{class_name}
def #{method_name}
raise ERROR_STRING_FOR_RANDOM
end
end
ER
eval(er)
else
define_method "#{method}" do
raise ERROR_STRING_FOR_RANDOM
end
end
end
現在你可以得到所有
> srand
RuntimeError: Usage of built-in random generators is not allowed
> rand
RuntimeError: Usage of built-in random generators is not allowed
> [2,3,4,5].shuffle
RuntimeError: Usage of built-in random generators is not allowed
:)).............. ......... –