为什么tcl认为空字符串是double?

用户名

对此很困惑:

$ tclsh
% string is double {}
1

为什么tcl会认为空字符串是有效的double?

多纳研究员

简介:这是一个错误的设计,并且在最初的用例是一个错误的地方,但是我们无法在8中进行更改。*(我不确定Tcl 9.0;我们仍然想避免不必要的使用在那里更改)。


string is命令最初旨在支持Tkentry小部件的验证选项。这些使小部件通过检查更改是否使小部件处于有效状态(例如保持整数)来响应键入(或焦点更改)。如果您愿意,可以这样做:

entry $w -validate key -vcmd {string is integer %P} -invcmd {bell}

然后,如果您按下字母键(例如)A,并且光标位于整数的中间,则该编辑将被拒绝,并且系统会发出警告声。真的很容易。

只有一个小问题。如果您已选择条目中的所有文本并按了一个数字,则编辑将被拒绝(string is默认情况下为严格)。问题在于编辑中存在一个中间过渡状态,其中旧文本被删除但在插入新文本之前:在这种情况下,验证发生两次,一次针对delete,一次针对insert(必须这样做,因为事情是在幕后捆绑在一起的。)这是一种糟糕的用户体验,因此string is默认情况下松懈,这样该用例就可以工作。

这不是我同意的决定-应该是相反的选择,如果需要的话,您需要在测试中要求宽松,这会增加很少的开销,同时允许其他用途更聪明-但我当时是那时只是普通用户。我更喜欢在表单中使用多阶段验证,例如将按键级别验证用作软验证,这样可以在用户使用表单的过程中允许错误的输入,并且只是表明它知道仍然存在问题,通过调整背景颜色和禁用提交按钮等技术。(但这是您提出的问题……)

库命令设计很棘手。它会仔细考虑用例,以确保正确。有时我们失败了。


问题起源于大约Tcl 8.1.0左右的Tcl和Tk外部代码。引入此功能的大多数补丁都非常好(它也为我们提供了诸如string equal和的命令string map),但这是一个可以多做一点的方面。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么将空字符串传递给Vue组件布尔型道具被认为是正确的?

来自分类Dev

为什么 s[0] 是 C++ 中空字符串 s 的空字符串?

来自分类Dev

为什么simplejson认为此字符串是无效的json?

来自分类Dev

为什么PHP认为0等于字符串?

来自分类Dev

为什么我的字符串比较认为'100%'<'70%'?

来自分类Dev

为什么 tkinter 认为整数是字符串

来自分类Dev

为什么在JavaScript中不空字符串== null

来自分类Dev

为什么搜索空字符串这么快?

来自分类Dev

为什么包含空字符串的列表为真?

来自分类Dev

为什么%(Identity)扩展为空字符串?

来自分类Dev

为什么 glGetProgramInfoLog 返回空字符串?

来自分类Dev

为什么codecs.iterdecode()吃空字符串?

来自分类Dev

为什么返回值总是空字符串?

来自分类Dev

为什么char * foo()返回空字符串?

来自分类Dev

为什么我从 Xpath 得到空字符串

来自分类Dev

在mysql中,NULL默认为空字符串吗?

来自分类Dev

为什么字符串类型的默认值是null而不是空字符串?

来自分类Dev

为什么在C ++中将字符串引用成员变量设置为空字符串?

来自分类Dev

当此变量已初始化为空字符串时,为什么将其设置为空字符串?

来自分类Java

为什么contains()方法在Java中的非空字符串中找到空字符串

来自分类Dev

为什么以反应形式将空字符串设置为null成为空字符串

来自分类Dev

为什么连接两个空字符串会导致一个空字符串?

来自分类Java

空字符串的模式是什么?

来自分类Java

空字符串的目的是什么?

来自分类Dev

为什么mcrypt加密在最终字符串中包含很多空字符?

来自分类Dev

当我尝试添加拆分后的字符串时,为什么会得到空字符串?

来自分类Dev

为什么re.sub没有用空字符串替换字符串

来自分类Dev

为什么在尝试在 Java 中拆分字符串时出现空字符串?以及如何修复它?

来自分类Mysql

为什么MySQL / MariaDB认为字符串(uuid)等于整数?

Related 相关文章

  1. 1

    为什么将空字符串传递给Vue组件布尔型道具被认为是正确的?

  2. 2

    为什么 s[0] 是 C++ 中空字符串 s 的空字符串?

  3. 3

    为什么simplejson认为此字符串是无效的json?

  4. 4

    为什么PHP认为0等于字符串?

  5. 5

    为什么我的字符串比较认为'100%'<'70%'?

  6. 6

    为什么 tkinter 认为整数是字符串

  7. 7

    为什么在JavaScript中不空字符串== null

  8. 8

    为什么搜索空字符串这么快?

  9. 9

    为什么包含空字符串的列表为真?

  10. 10

    为什么%(Identity)扩展为空字符串?

  11. 11

    为什么 glGetProgramInfoLog 返回空字符串?

  12. 12

    为什么codecs.iterdecode()吃空字符串?

  13. 13

    为什么返回值总是空字符串?

  14. 14

    为什么char * foo()返回空字符串?

  15. 15

    为什么我从 Xpath 得到空字符串

  16. 16

    在mysql中,NULL默认为空字符串吗?

  17. 17

    为什么字符串类型的默认值是null而不是空字符串?

  18. 18

    为什么在C ++中将字符串引用成员变量设置为空字符串?

  19. 19

    当此变量已初始化为空字符串时,为什么将其设置为空字符串?

  20. 20

    为什么contains()方法在Java中的非空字符串中找到空字符串

  21. 21

    为什么以反应形式将空字符串设置为null成为空字符串

  22. 22

    为什么连接两个空字符串会导致一个空字符串?

  23. 23

    空字符串的模式是什么?

  24. 24

    空字符串的目的是什么?

  25. 25

    为什么mcrypt加密在最终字符串中包含很多空字符?

  26. 26

    当我尝试添加拆分后的字符串时,为什么会得到空字符串?

  27. 27

    为什么re.sub没有用空字符串替换字符串

  28. 28

    为什么在尝试在 Java 中拆分字符串时出现空字符串?以及如何修复它?

  29. 29

    为什么MySQL / MariaDB认为字符串(uuid)等于整数?

热门标签

归档