TCL变量

2023-11-15

目录

简单变量

数组

相关命令

set

unset

append和incr


简单变量

一个 TCL 的简单变量包含两个部分:名字和值。名字和值都可以是任意字符串。例如一个名为 “1323 7&*: hdgg"的变量在 TCL 中都是合法的。不过为了更好的使用置换(substitution), 变量名最好按 C\C++语言中标识符的命名规则命名。 TCL 解释器在分析一个变量置换时,只 把从$符号往后直到第一个不是字母、数字或下划线的字符之间的单词符号作为要被置换的变量 的名字。例如:

set a 2

输出:2

set a.1 4

输出:4

set b $a.1

输出:2.1

在最后一个命令行,我们希望把变量 a.1 的值付给 b,但是 TCL 解释器在分析时只把$符号之后直到第一个不是字母、数字或下划线的字符(这里是'.')之间的单词符号(这里是'a')当作要被置换 的变量的名字,所以 TCL 解释器把 a 置换成 2,然后把字符串“2.1”付给变量 b。这显然与我们的初衷不同。

当然,如果变量名中有不是字母、数字或下划线的字符,又要用置换,可以用花括号把变量名括 起来。例如:

set b ${a.1}

输出:4

TCL 中的 set 命令能生成一个变量、也能读取或改变一个变量的值。例如:

set a {kdfj kjdf}

输出:kdfj kjdf

如果变量 a 还没有定义,这个命令将生成 变量 a,并将其值置为 kdfj kjdf,若 a 已定义,就简单的把 a 的值置为 kdfj kjdf。

set a

输出:kdfj kjdf

这个只有一个参数的 set 命令读取 a 的当前值 kdfj kjdf。

数组

数组是一些元素的集合。TCL 的数组和普通计算机语言中的数组有很大的区别。在 TCL 中,不 能单独声明一个数组,数组只能和数组元素一起声明。数组中,数组元素的名字包含两部分:数组名和数组中元素的名字,TCL 中数组元素的名字(下标)可以为任何字符串。例如:

set day(monday) 1

set day(tuesday) 2

第一个命令生成一个名为 day 的数组,同时在数组中生成一个名为 monday 的数组元素,并把值置为 1,第二个命令生成一个名为 tuesday 的数组元素,并把值置为 2

简单变量的置换已经在前一节讨论过,这里讲一下数组元素的置换。除了有括号之外,数组元素 的置换和简单变量类似。例:

set a monday

set day(monday) 1

set b $day(monday)         //b 的值为 1,即 day(monday)的值。

set c $day($a)         //c 的值为 1,即 day(monday)的值。

TCL 不能支持复杂的数据类型,这是一个很大的缺憾,也是 TCL 受指责很多的方面。但是 TCL 的一个扩展 ITCL 填补了这个缺憾。

相关命令

set

set 命令能生成一个变量、也能读取或改变一个变量的值。

unset

这个命令从解释器中删除变量,它后面可以有任意多个参数,每个参数是一个变量名,可以是简单变量,也可以是数组数组元素。例如:

unset a b day(monday)

上面的语句中删除了变量 a、b 和数组元素 day(monday),但是数组 day 并没有删除,其他元素还存在,要删除整个数组,只需给出数组的名字。例如:

puts $day(monday)

输出:can't read "day(monday)": no such element in array

% puts $day(tuesday)

输出:2

%unset day

% puts $day(tuesday)

输出:can't read "day(tuesday)": no such variable

append和incr

这两个命令提供了改变变量的值的简单手段。

append 命令把文本加到一个变量的后面,例如:

set txt hello

输出:hello

append txt "! How are you"

输出:hello! How are you

incr 命令把一个变量值加上一个整数。incr 要求变量原来的值和新加的值都必须是整数

set b a

输出:a

incr b

输出:expected integer but got "a" 

set b 2

输出:2

incr b 3

5

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCL变量 的相关文章

  • JSON.Net 反序列化返回“null”

    我正在使用 JSON Net 反序列化 JSON 字符串 JSON 字符串是 string testJson Fruits Apple color red size round Orange Pro
  • IEnumerable 的 String.Join(string, string[]) 的类似物

    class String包含非常有用的方法 String Join string string 它从数组创建一个字符串 用给定的符号分隔数组的每个元素 但一般来说 它不会在最后一个元素之后添加分隔符 我将它用于 ASP NET 编码 以用
  • 锁定 ASP.NET 应用程序变量

    我在 ASP NET 应用程序中使用第三方 Web 服务 对第 3 方 Web 服务的调用必须同步 但 ASP NET 显然是多线程的 并且可能会发出多个页面请求 从而导致对第 3 方 Web 服务的同时调用 对 Web 服务的调用封装在自
  • C free() 是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 malloc 和 free 如何工作 https stackoverflow com questions 1119134 how malloc and free work include
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 将下拉列表与字典绑定

    我将字典绑定到下拉列表 举例来说 我的字典中有以下项目 Test1 123 Test2 321 我希望下拉文本采用以下格式 Test1 Count 123 Test2 Count 321 我沿着以下路径走 但没有运气 MyDropDown
  • 将日期时间转换为指定格式

    我有这个日期格式yy MM dd HH mm ss ex 12 02 21 10 56 09 问题是 当我尝试使用以下代码将其转换为不同格式时 CDate 12 02 21 10 56 09 ToString MMM dd yyyy HH
  • C# 编译器数字文字

    有谁知道 C 编译器数字文字修饰符的完整列表 默认情况下 声明 0 使其成为 Int32 声明 0 0 使其成为 Double 我可以在末尾使用文字修饰符 f 来确保某些内容被视为 Single 例如像这样 var x 0 x is Int
  • 如何使用 Roslyn 通过扩展方法、静态类中的方法以及带有 ref/out 参数的方法来访问调用

    我正在致力于创建一个开源项目 用于创建 NET UML 序列图 该项目利用名为 js sequence diagrams 的 javascript 库 我不确定 Roslyn 是适合这项工作的工具 但我想我应该尝试一下 所以我整理了一些概念
  • 通过 C# Mailkit / Mimekit 发送电子邮件,但出现服务器证书错误

    Visual Studio 2015 中的 0 代码 1 我正在使用 Mailkit 最新版本 1 18 1 1 从我自己的电子邮件服务器发送电子邮件 2 电子邮件服务器具有不受信任的自签名证书 3 我在代码中添加了以下两行 以忽略服务器证
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • Resharper:IEnumerable 的可能多重枚举

    我正在使用新的 Resharper 版本 6 在我的代码中的几个地方 它给一些文本加了下划线 并警告我可能存在IEnumerable 可能的多重枚举 我理解这意味着什么 并在适当的情况下采纳了建议 但在某些情况下 我不确定这实际上是一个大问
  • 将错误代码映射到 C++ 中的字符串

    将错误代码从枚举映射到字符串的更有效方法是什么 在 C 中 例如 现在我正在做这样的事情 std string ErrorCodeToString enum errorCode switch errorCode case ERROR ONE
  • doxygen c++:记录由“using”声明公开的私有继承成员

    作为一个例子 我有以下课程 class A public void methodOne class B private A public Brief description using A methodOne 我还没有找到强制 doxyge
  • C# 中的 C/C++ 代码编译器

    在 C 中 我可以使用下面的代码编译 VB 和 C 代码 但无法编译 C C 代码 有什么办法可以做到这一点吗 C 编译器 public void Compile string ToCompile string Result null st
  • EnumDisplayDevices 与 WMI Win32_DesktopMonitor,如何检测活动监视器?

    对于我当前的 C 项目 我需要为在大量计算机上连接并处于活动状态的每个监视器检测一个唯一的字符串 研究指出了两种选择 使用 WMI 并查询 Win32 DesktopMonitor 以获取所有活动监视器 使用 PNPDeviceID 来唯一
  • C 中使用 getrandom 实现随机浮点数

    我试图生成一个介于 0 和 1 之间的随机浮点数 无论是在 0 1 还是 0 1 对我来说都不重要 网上关于此的每个问题似乎都涉及rand 呼叫 播种time NULL 但我希望能够每秒多次调用我的程序 并每次都获得不同的随机数 这引导我找
  • 无法识别解决方案文件夹中的 Visual Studio 2017 Nuget.config

    我在使用 Visual Studio 2017 时遇到问题 新的解决方案不断引用 C Users yopa AppData Roaming NuGet Nuget config 中意外位置的 Nuget config 文件 我已将 nuge
  • 如果“嵌入式”SQL 2008 数据库文件不存在,如何创建它?

    我使用 C ADO Net 和在 Server Management Studio 中创建的嵌入式 MS SQL 2008 数据库文件 附加到 MS SQL 2008 Express 创建了一个数据库应用程序 有人可以向我指出一个资源 该资

随机推荐

  • git gui管理服务器配置文件,【转】Git系列:Git Bash/GUI使用精要

    Git命令多且灵活 可以写本厚厚的宝典了 但不必成为Git专家 满足常用开发需要才是咱的目的 以前也在使用Git 但过于浅显 且和svn同质化了 现在需要加深对Git的掌握 本文未完待续 以后在实际使用Git过程中会更新本文 Git版本控制
  • thinkphp6 模型中name字段冲突

    在模型中 修改user表中的id 1的记录 将其name命名为 test user User find 1 user gt name test user gt save 上面的代码将失败 这是由于 name 与 think Model 中的
  • tidb数据同步及事务原理

    raft共识算法 raft是一种分布式一致性算法 tikv server通过raft算法保证数据的强一致性 pd server也是通过raft来保证数据的一致性 Raft下读写是如何工作的 读写都是通过leader follower只有选举
  • zTree 树插件异步加载地区数据

    之前使用zTree树插件实现全国五级地区点击后加载 今天记录使用zTree 树插件异步加载地区数据 还是上次的需求 http blog csdn net li ya fei article details 79234265 document
  • react——组件API

    h1 h1 h1 react组件API h1 p 在本章我们将讨论react组件的API 设置状态 setState 替换状态 replaceState 设置属性 setProps 替换属性 replaceProps 强制更新 forceU
  • 情侣飞行棋 情侣小游戏 2023 抖音

    飞行棋网站地址 https effect guoyaxue top fxq index html 以及各种新版来袭 以及各种情侣小游戏合集 https fxnew guoyaxue top
  • uni.uploadFile遇见的坑uploadFile:fail createUploadTask:fail file not found

    uni uploadFile遇见的坑 这两天用uni uni uploadFile遇见个坑上传图片时候一直报错 uploadFile fail createUploadTask fail file not found 我尝试各种方法都没解决
  • Mysql 左外联查left join及多次联查同一张表时的sql优化调优。

    近期接触了大量用户数据导出业务 因业务生命周期短及需程序少迭代等约束 遂编写大SQL用以导出大量用户数据 初版Sql 为正常的左外联查并对应的对及联条件引入联合索引此为sql优化点 1 针对联查条件引入索引 EXPLAIN SELECT a
  • python pandas中ExcelFile与read_excel的区别

    ExcelFile与read excel是pandas中处理excel文件的两个方法 本文将从实例进行说明 来介绍这两种方法的区别 事实上 尽管预料到pandas同时支持这两种方法 但整体上我还不知道pandas对这两个方法的定位是什么 而
  • postman使用技巧

    文章目录 postman使用技巧 动态获取token 1 使用restful API接口登录设备 2 添加token变量 3 添加token判断 postman使用技巧 动态获取token 1 使用restful API接口登录设备 2 添
  • 毕业设计-基于协同过滤算法的个性化推荐系统

    目录 前言 课题背景和意义 实现技术思路 一 预备知识 二 基于SlopeOne的协同过滤推荐优化算法 三 基于改进 的协同过滤推荐优化算法 四 结论及展望 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为
  • Exception:两个类具有相同的 XML 类型名称,请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称...

    两个类具有相同的 XML 类型名称 http service webservice base xm searchAccountBatchResponse 请使用 XmlType name 和 XmlType namespace 为类分配不同
  • MyBatis choose、when和otherwise标签简介说明

    转自 MyBatis choose when和otherwise标签简介说明 MyBatis 中动态语句 choose when otherwise其功能 同Java中的switch case default语句相同 但是因为MyBatis
  • stata 线性回归分析基本操作

    一 线性回归基本命令 regress y x1 x2 红色表示该命令可简写为红色部分 以 Nerlove 数据为例 数据附后文 regress lntc lnq lnpf lnpk lnpl 表上半部分为方差分析表 包括回归平方和 残差平方
  • python对excel增删改查语句_python对 MySQL 数据库进行增删改查的脚本

    coding utf 8 import pymysql import xlrd import codecs 连接数据库 conn pymysql connect host 127 0 0 1 port 3306 user root pass
  • 不显示头像服务器问题,完美解决Gravatar头像不显示的问题

    最近一段时间 感觉我的博客打开速度很慢 页面总是加载不完 仔细检查发现gravatar头像不显示了 再一搜才知道原来gravatar的头像服务器被那啥了 对于隔三差五出现这种情况 相信各位已经无力吐槽 只能在心里默念一句 祝病魔早日 原博主
  • HarmonyOSd第一次任务

    JS FA 应用的 JS 模块 entry src main js module 的典型开发目录结构如下 目录结构中文件分类如下 hml 结尾的 HML 模板文件 这个文件用来描述当前页面的文件布局结构 css 结尾的 CSS 样式文件 这
  • Centos 磁盘根目录扩容

    Centos磁盘根目录扩容 1 扩容前检查 命令 df Th or df h 我们要扩张磁盘空间的就是挂载点为 的这个 2 添加sda磁盘空间查询磁盘 命令 fdisk l 其实 我们可以将sda的磁盘新增空间分配给处于sda的 挂载目录
  • 折线图横坐标怎么设置_Excel折线图的横坐标如何设置?方法超简单,赶快学起来...

    在我们平时使用Excel表格来进行各种数据的编辑工作时 我们往往会因为某一些实际的需求 需要在表格当中插入一些图表 以此来更加清晰 直观的展现此时表格数据当中的内容 而在Excel表格当中插入折线图 相信这是很多小伙伴都会做的工作 尤其是想
  • TCL变量

    目录 简单变量 数组 相关命令 set unset append和incr 简单变量 一个 TCL 的简单变量包含两个部分 名字和值 名字和值都可以是任意字符串 例如一个名为 1323 7 hdgg 的变量在 TCL 中都是合法的 不过为了