From f63403e1bc0191eb64e85919d5c32f13c09910eb Mon Sep 17 00:00:00 2001
From: Xingyu Wang <xingyu.wang@gmail.com>
Date: Thu, 23 Feb 2023 14:01:06 +0800
Subject: [PATCH] RP

@geekpi
https://linux.cn/article-15567-1.html
---
 ...⭐️⭐️ Learn Tcl by writing a simple game.md | 23 +++++++++++--------
 1 file changed, 14 insertions(+), 9 deletions(-)
 rename {translated/tech => published}/20230209.3 ⭐️⭐️ Learn Tcl by writing a simple game.md (73%)

diff --git a/translated/tech/20230209.3 ⭐️⭐️ Learn Tcl by writing a simple game.md b/published/20230209.3 ⭐️⭐️ Learn Tcl by writing a simple game.md
similarity index 73%
rename from translated/tech/20230209.3 ⭐️⭐️ Learn Tcl by writing a simple game.md
rename to published/20230209.3 ⭐️⭐️ Learn Tcl by writing a simple game.md
index f20333549d..60078272a2 100644
--- a/translated/tech/20230209.3 ⭐️⭐️ Learn Tcl by writing a simple game.md	
+++ b/published/20230209.3 ⭐️⭐️ Learn Tcl by writing a simple game.md	
@@ -3,14 +3,18 @@
 [#]: author: "James Farrell https://opensource.com/users/jamesf"
 [#]: collector: "lkxed"
 [#]: translator: "geekpi"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-15567-1.html"
 
-通过编写一个简单的游戏来学习 Tcl
+通过“猜数字”游戏学习 Tcl
 ======
 
-我的 Tcl 之路始于最近需要将一个困难的基于 Java 的命令行配置工具自动化。我使用 Ansible 做了一些自动化编程,偶尔也会使用 expect 模块。坦率地说,我发现这个模块的作用有限,原因包括:难以对相同的提示进行排序,难以捕捉到额外步骤的值,控制逻辑的灵活性有限,等等。有时你可以用 shell 模块来代替。但有时你会遇到那种行为异常、过于复杂的命令行界面,似乎无法实现自动化。
+![][0]
+
+> 探索 Tcl 的基本语言结构,包括用户输入、输出、变量、条件评估、循环和简单函数。
+
+我的 Tcl 之旅始于最近需要将一个困难的基于 Java 的命令行配置工具自动化。我使用 Ansible 做了一些自动化编程,偶尔也会使用 `expect` 模块。坦率地说,我发现这个模块的作用有限,原因包括:难以对相同的提示进行排序,难以捕捉到额外步骤的值,控制逻辑的灵活性有限,等等。有时你可以用 `shell` 模块来代替。但有时你会遇到那种特立独行、过于复杂的命令行程序,似乎无法实现自动化。
 
 就我而言,我正在自动安装我公司的一个程序。最后的配置步骤只能通过命令行来完成,通过几个不规范的、重复的提示和需要捕捉的数据输出。好在传统的 Expect 是唯一的答案。要使用 Expect 的基本功能,并不需要对 Tcl 有很深的了解,但你了解的越多,你就能从它那里得到更多的力量。这是后续文章的话题。现在,我探讨一下 Tcl 的基本语言结构,包括用户输入、输出、变量、条件判断、循环和简单函数。
 
@@ -49,9 +53,9 @@ $ chmod 755 numgame.tcl
 
 这里有一些关于 Tcl 的简单介绍,以便与本文一起追踪。
 
-第一点是,所有的 Tcl 都被认为是一系列的字符串。变量通常被当作字符串处理,但可以自动切换类型和内部表示(这一点你通常无法看到)。函数可以把它们的字符串参数解释为数字(`expr`),并且只通过值传递。字符串通常使用双引号或大括号来划分。双引号允许变量扩展和转义序列,而大括号则完全没有扩展。
+第一点是,Tcl 处理的都是字符串。变量通常被当作字符串处理,但可以自动切换类型和内部表示(这一点你通常无法看到)。函数可以把它们的字符串参数解释为数字(`expr`),并且只通过值传递。字符串通常使用双引号或大括号来划分。双引号允许变量扩展和转义序列,而大括号则完全没有扩展。
 
-第二点是 Tcl 语句可以用分号隔开,但通常不是这样。语句行可以用反斜杠字符来分割。然而,典型的做法是将多行语句放在大括号内,以避免需要这样做。大括号只是更简单,下面的代码格式也反映了这一点。大括号允许对字符串进行延迟求值。在 Tcl 进行变量替换之前,一个值被传递给一个函数。
+第二点是 Tcl 语句可以用分号隔开,但通常不这样。语句行可以用反斜杠字符来分割,然而,典型的做法是将多行语句放在大括号内,以避免需要这样做。大括号只是更简单,下面的代码格式也反映了这一点。大括号允许对字符串进行延迟求值。在 Tcl 进行变量替换之前,值被传递给函数。
 
 最后,Tcl 使用方括号进行命令替换。方括号之间的任何东西都会被送到 Tcl 解释器的一个新的递归调用中进行求值。这对于在表达式中间调用函数或为函数生成参数是很方便的。
 
@@ -131,7 +135,7 @@ You guessed value 3 after 6 tries and 20 elapsed seconds
 
 ### 继续学习
 
-当我开始这个练习时,我怀疑回到 90 年代末的流行语言对我有多大的帮助。一路走来,我发现 Tcl 有几处让我非常喜欢的地方,我最喜欢的是方括号内的命令求值。与其他许多过度使用复杂闭包结构的语言相比,它似乎更容易阅读和使用。我以为它是一种[死语言][2],但实际上它仍在蓬勃发展,并在多个平台上得到支持。我学到了一些新的技能,并对这种古老的语言有了新的认识。
+当我开始这个练习时,我怀疑回到 90 年代末的流行语言对我有多大的帮助。一路走来,我发现 Tcl 有几处让我非常喜欢的地方,我最喜欢的是方括号内的命令求值。与其他许多过度使用复杂闭包结构的语言相比,它似乎更容易阅读和使用。我以为它是一种 [已消亡的语言][2],但实际上它仍在蓬勃发展,并在多个平台上得到支持。我学到了一些新的技能,并对这种古老的语言有了新的认识。
 
 在 [https://www.tcl-lang.org][3] 上查看官方网站。你可以找到最新的源代码、二进制发行版、论坛、文档,以及仍在进行的会议信息的参考。
 
@@ -142,7 +146,7 @@ via: https://opensource.com/article/23/2/learn-tcl-writing-simple-game
 作者:[James Farrell][a]
 选题:[lkxed][b]
 译者:[geekpi](https://github.com/geekpi)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
 
 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
 
@@ -151,3 +155,4 @@ via: https://opensource.com/article/23/2/learn-tcl-writing-simple-game
 [1]: https://opensource.com/article/20/6/homebrew-mac
 [2]: https://opensource.com/article/19/6/favorite-dead-language
 [3]: https://www.tcl-lang.org
+[0]: https://img.linux.net.cn/data/attachment/album/202302/23/140000ilg3oa8khgrhr1r3.jpg
\ No newline at end of file