Highline gem のask
メソッドでエコー文字をランダム化しようとしていますが、うまくいきませんでした。私はこれを正しくしませんでしたか?
srand
ask("password: ") { |q| q.echo = ('a'.ord+rand(26)).chr }
ask()
文字は呼び出しごとにランダム化されますが、文字ごとではありません。最初の実行では、同じ文字、つまり「cccc」がエコーされます。次の実行では、「mmmm」などがエコーされます。
echo
出力をエコーするかどうかを決定するために使用される変数値です。ハイラインソースから:
# [echo] Can be set to +true+ or +false+ to control whether or not input will
# be echoed back to the user. A setting of +true+ will cause echo to
# match input, but any other true value will be treated as a String to
# echo for each character typed.
コード ( ('a'.ord+rand(26)).chr
) は ごとに 1 回評価され、 highline 内ask
の変数に格納され、入力された文字ごとに出力されます。echo
ハイラインを変更しないと、入力文字ごとに異なるランダムな文字を印刷することはできません。