input - perl6 有没有办法进行可编辑的提示输入?

标签 input default prompt raku

在 bash shell 中,如果您点击向上或向下箭头,shell 将显示您输入的上一个或下一个命令,您可以将这些命令编辑为新的 shell 命令。

在 perl6 中,如果你这样做了

my $name = prompt("Enter name: ");

它会打印“Enter name:”然后要求输入;有没有办法让 perl6 给你一个默认值,然后你只需将默认值编辑为新值。例如:

my $name = prompt("Your name:", "John Doe");

并打印

Your name: John Doe

John Doe 部分是可编辑的,当您按下回车键时,编辑的字符串就是 $name 的值。

https://docs.raku.org/routine/prompt没有说明如何去做。

如果您必须输入许多长字符串,而每个字符串与其他字符串只有几个字符不同,这将很有用。

谢谢。

最佳答案

要让编辑部分继续进行,您可以使用 Linenoise 模块:

zef install Linenoise

( https://github.com/hoelzro/p6-linenoise )

然后,在您的代码中,执行:

use Linenoise;
sub prompt($p) {
    my $l = linenoise $p;
    linenoiseHistoryAdd($l);
    $l
}

然后您可以使用提示进行循环。请记住,基本上所有 Perl 6 内置函数都可以词法覆盖。现在,如何填写原始字符串,我还没有弄清楚。也许 libreadline 文档可以帮助您。

关于input - perl6 有没有办法进行可编辑的提示输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43032827/

相关文章:

c++ - 如何在我的 C 版 Tic Tac Toe 中修复我的输入验证?

ios - 我如何在我的应用程序中实现一个按钮,以便每次用户按下它时,整个应用程序的默认颜色都会改变

excel - 为什么返回自身作为默认属性的对象会挂起 Excel 并使调试器崩溃?

matlab - Inputdlg 未检测到换行符

bash - 将 shell 配置为始终在新行上打印提示,例如 zsh

node.js - Bot框架(v4)使用HeroCards在轮播中提示选择不进入下一步

python - 多项式作为 Python 中的输入

css - 如何使我的 <input type ="submit"/> 成为图像?

c# - XNA Keyboard.GetState() 不读取数字/字符键,而是读取其他键

java - 在 AlertDialog 构建器中设置默认首选项