0

我正在尝试在 Highline gem 的ask方法中随机化 echo 字符,但无法使其正常工作。我做的不对吗?

srand
ask("password:  ") { |q| q.echo = ('a'.ord+rand(26)).chr }

每个调用的字符都是随机的ask(),但不是每个字符。第一次运行将回显相同的字符,即'cccc'。下一次运行将回显“mmmm”等。

4

1 回答 1

2

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) 将被评估一次ask,存储在echohighline 内的变量中,然后为输入的每个字符打印出来。

在不修改高线的情况下,您无法让它为每个输入字符打印不同的随机字符。

于 2014-03-14T15:31:11.070 回答