除了Tcl之外的编程语言,这里的一切都是字符串

除了Tcl之外的编程语言,这里的一切都是字符串,tcl,language-features,Tcl,Language Features,是否有任何编程语言的一切都是字符串。例如,让我们考虑一下这个TCL片段(注释显示了C/java中的等价语句),例如 实际上,这与C或Java等语言的情况相反;在这里,我们默认键入的是文字字符串,除非它是一个“特殊”字或前面有$sign(在这种情况下,$后面的字符串是一个变量)。我想说,您的示例与C或Java没有太大的区别。这种宽松的语法在shell脚本语言中并不少见,只需要一个足够聪明的预处理器就可以让它在C语言中使用。Lisp宏在反引号表达式中具有“一切都是文字,除非我说它应该被计算”的语义

是否有任何编程语言的一切都是字符串。例如,让我们考虑一下这个TCL片段(注释显示了C/java中的等价语句),例如


实际上,这与C或Java等语言的情况相反;在这里,我们默认键入的是文字字符串,除非它是一个“特殊”字或前面有$sign(在这种情况下,$后面的字符串是一个变量)。

我想说,您的示例与C或Java没有太大的区别。这种宽松的语法在shell脚本语言中并不少见,只需要一个足够聪明的预处理器就可以让它在C语言中使用。Lisp宏在反引号表达式中具有“一切都是文字,除非我说它应该被计算”的语义

Tcl EIAS意味着它允许一个程序处理不同的数据结构,数据结构和可执行代码,可以互换,使用字符串作为通用货币。这并不是闻所未闻的:例如Lisp使用列表来实现这一点,但也不常见。它使Tcl非常动态,对许多程序员来说也超级怪异

和是两种具有相同理念的语言:

在Rexx中——有点像在TCL中——在很大程度上,一切都是一个字符串。使用由行组成的堆栈和流可以提供一个简单的字符串列表或数组。但大多数情况下,字符串只是根据需要像其他数据类型一样工作。例如,包含数字(数字、十进制、指数“e”等)的适当表示形式的字符串可用于算术运算。对于处理报告、日志文件等,这正是您想要的行为

*nix有许多这样的迷你语言。例如:

  • 塞德
  • tr
  • 削减
  • 粘贴
  • 加入
  • fmt
  • 分裂
  • 公关
  • 折叠
参考资料


PHP internalsNote“字符串”并不总是意味着“可阅读的文本”。事实上,它甚至不意味着该值实际上是一个字符串。只是它是可序列化的。@DonalFellows:嗯,它将是一个字符串,从某种意义上说,它是一个字符序列,对吗?这不是一个用户应该随意使用或处理的字符串。如果你通过一个只看到字符序列的镜头来观察这个值,你就会看到这个值。更重要的是,所有的价值观都支持这种观点;每个内部值类型都是可序列化的。不能保证字符串有多漂亮,但我们会尽力做好数字、列表之类的工作。
set x [append ab cd] ;# c = "ab" + "cd"
set m 1 ;# m = 1
set n [expr $m + 1] ;# n = m + 1