- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
stdin.readByteSync最近已添加到Dart。
使用stdin.readByteSync进行数据输入时,我试图允许使用默认值,并且如果运算符(operator)进行了输入,则要清除默认值。如果未输入任何内容而仅按Enter键,则使用默认值。
但是,似乎正在发生的情况是,直到输入换行符,才将终端输出发送到终端。因此,当我执行print()或stdout.write()时,它会延迟到输入换行符为止。
因此,当运算符(operator)输入第一个字符以覆盖默认值时,不会清除默认值。 IE浏览器默认值为“abc”,输入的数据为“xx”,但是在输入“xx”后屏幕上会显示“xxc”。 “问题”似乎是在输入换行符之前,没有向终端发送任何“写入”消息。
虽然可以找到一种替代方法,但我想知道这是readByteSync应该还是必须起作用的方法。如果是这样,我会找到另一种做我想做的方式。
//示例程序//
import 'dart:io';
void main () {
int iInput;
List<int> lCharCodes = [];
print(""); print("");
String sDefault = "abc";
stdout.write ("Enter data : $sDefault\b\b\b");
while (iInput != 10) { // wait for newline
iInput = stdin.readByteSync();
if (iInput == 8 && lCharCodes.length > 0) { // bs
lCharCodes.removeLast();
} else if (iInput > 31) { // ascii printable char
lCharCodes.add(iInput);
if (lCharCodes.length == 1)
stdout.write (" \b\b\b\b chars cleared"); // clear line
print ("\nlCharCodes length = ${lCharCodes.length}");
}
}
print ("\nData entered = ${new String.fromCharCodes(lCharCodes).trim()}");
}
c:\Users\Brian\dart-dev1\test\bin>dart testsync001.dart
Enter data : xxc
chars cleared
lCharCodes length = 1
lCharCodes length = 2
Data entered = xx
c:\Users\Brian\dart-dev1\test\bin>
最佳答案
我最近添加了stdin.readByteSync和readLineSync,以更轻松地创建读取stdin的小笔迹。但是,仍然缺少两件事,因为这是功能完整的。
1)线路模式与原始模式。这基本上就是您要的,一种在打印后立即获取字符的方法。
2)开/关回声。此模式对于例如输入密码,以便您可以禁用字符的默认回显。
我希望能够尽快实现和登陆这些功能。
您可以为this bug加上星号来跟踪它的发展!
关于dart - readByteSync-此行为正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17723714/
stdin.readByteSync最近已添加到Dart。 使用stdin.readByteSync进行数据输入时,我试图允许使用默认值,并且如果运算符(operator)进行了输入,则要清除默认值。
我是一名优秀的程序员,十分优秀!