代码之家  ›  专栏  ›  技术社区  ›  Skilldrick

为什么有基于1的行号而基于0的字符数的约定?

  •  1
  • Skilldrick  · 技术社区  · 15 年前

    根据 TkDocs :

    这里的“1.0”表示插入文本的位置,可以理解为“行1,字符0”。这是指第一行的第一个字符;对于与程序员通常如何引用行和字符相关的历史惯例,行数是基于1的,字符数是基于0的。

    我以前没有听说过这个会议,在谷歌上也找不到任何相关的信息。有人能给我解释一下吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   slebetman    15 年前

    我想你指的是tk的文本小部件。手册上写着:

    为了与使用此编号方案的其他UNIX程序保持一致,行从1开始编号。

    不过,我不知道它在说什么样的Unix工具。

    更新: 正如注释中所提到的,看起来很多Unix文本操作工具都是从1开始编号的。而tcl/tk有一个unix源代码,尽可能与底层操作系统环境兼容是有意义的。

        2
  •  3
  •   David M    15 年前

    这实际上只是惯例,但这里有一个建议。

    字符位置通常被看作与Java迭代器相同的方式,它是两个字符之间的位置的“指针”。因此,第一个字符是索引位置0之后的字符。例如,子字符串位于两个字符间位置之间。

    另一方面,行位置通常更像是.NET枚举器,它是指向项本身的“指针”,而不是指向介于两者之间的位置。因此,第一行是位置1处的行。