他の人が独自の擬似ランダムメソッドを作成したとしましょう。プログラミング練習として。そして、我々は、彼らがこれまでショートカットArrayクラスのシャッフルとサンプルを無効にする
として組み込み関数に解決しようとするたびにエラーが発生する場合、これは私がやっていることです:
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|
eval
"""
def #{method}
raise ERROR_STRING_FOR_RANDOM
end
"""
end
だから、それブロックランダムに、そしてこれらの昇給エラー:
rand
srand
Random.new.rand(18)
ただし、配列の疑似ランダムメソッドでは機能しません。たとえば、
[1,2,3].shuffle!
まだ動作します。なぜそれが起こり、それを防ぐのですか?
:) ..............:彼らはただのrandとsrand関数を無効にする正しい方法は次のようになり、代わりに同様の方法
を再定義するクラス内の定数を作成します......... –