TCL语言中的执行顺序
TCL语言的执行顺序是:先分组,再替换,最后执行
花括号中不准替换
双引号和花括号的作用都是分组,但是不同之处在于是否支持替换
语句的运行分3步走:
1、首先分组
2、其次替换
3、最后运行
$的作用是变量引导符,在字符串中如果要替换某个变量,可能还需要用{}来界定变量的起始和终点
分组有三种方法:空格,双引号和花括号
另外转义符\在这里的作用是提升或者消除字符的能力
一、什么是TCL
Tcl 全称是 Tool command Language。它是一个基于字符串的命令语言,基础结构和语法非常简单,易于学习和掌握。
Tcl 语言是一个解释性语言,所谓解释性是指不象其他高级语言需要通过编译和联结,它象其他 shell 语言一样,直接对每条语句顺次解释执行。
Tcl 数据类型简单。对 Tcl 来说,它要处理的数据只有一种——字符串。Tcl 将变量值以字符串的形式进行存储,不关心它的实际使用类型。
二、TCL的基本语法
1.输出:tcl使用”puts"关键字来作为输出语句
[语法] : puts ?-nonewline? ?channelId? string
Tcl 的输出命令是“puts”,将字符串输出到标准输出 channelId。语法中两个问号之间的参数为可选参数。
puts hello
结果=> hello puts –nonewline "hello hello"
结果=>hello hello
但如果输出一段有空格的文本,则要用双引号或者花括号括起来
-nonewline 选项告诉 puts 不输出回车换行。
注意:双引号和花括号的作用是将多个词组织成一个变元,但他们是有差别的!这种差别就是在处理“替换操作”时,前者允许替换发生,而后者则可能会阻止替换。关于两者用法与差别以后会陆续讲到。在这里两者作用相同。
2.赋值: tcl 使用“set”关键字来定义参数,不必指定变量值的类型,因为变量值的类型仅一种——字符串。为变量赋值时,会为变量开辟一段内存空间来存储变量值。
[语法] set varName [value]
set a Hello ;#定义变量 a 并赋值
=>Hello
puts $a ;#输出变量值
=>Hello
set a “Hello world” ;#重新赋值
=>Hello world
set a “Hello world”
=> Test Tcl ;#输出变量值,此时不加”$” puts $a
=>Hello world ;#输出变量值,此时要加”$” puts a
=> a ;#输出字符”a” set b $a
=>Hello world puts $b
=>Hello world ;#将 a 的值赋给 b
3.替换
(1)$
“$”符实现引用替换,用以引用参数值。上面也用到过
Tcl 对替换只进行一遍解释,对嵌套的”$”不于理睬。
set foo oo
=>oo
set dollar foo
=>foo
set x $$dollar
=>$foo ;#只解释一次,将“$dollar”用 dollar 的值(foo)代替, ;#命令等效为 set x {$foo},大括阻止替换。
set x {$foo}
=>$foo
set y $x
=>$foo ; #一轮替换
(2) :[]
方括号“[]”完成命令替换。用“[]”将一条命令括起来,命令执行完成后,返回结果。
set b [set a 5] ;#set a 5 命令输出的结果赋给 b
=>5 puts $b
=>5 set c [expr 5 * 10] ;#将乘式结果赋给 c
=>50
(3): " " 和{}
双引号和花括号将多个单词组织成一个参数,也是一种替换操作。””和{}内的替换如何进行
呢?一般的原则是在" "内的替换正常进行,而在{}内的替换有可能会被阻止。
set a 123
=>123 puts "$a" #会替换
=>123puts {$a} #不会替换
=>$a
三、总结
TCL语言的执行顺序是:先分组,再替换,最后执行
花括号中不准替换
双引号和花括号的作用都是分组,但是不同之处在于是否支持替换
语句的运行分3步走:
1、首先分组
2、其次替换
3、最后运行
$的作用是变量引导符,在字符串中如果要替换某个变量,可能还需要用{}来界定变量的起始和终点
分组有三种方法:空格,双引号和花括号
另外转义符\在这里的作用是提升或者消除字符的能力
TCL语言中的执行顺序相关推荐
- Unity脚本在层级面板中的执行顺序测试3
断断续续的写了3篇,以后有时间可以做成一个系列了 前面2篇测试了GameObject的顺序,以及Awake和OnEnable的时机: Unity脚本在层级面板中的执行顺序测试1 http://www. ...
- 日志打印、main函数中代码执行顺序
文章目录 1.设置时区 2.日志打印 3.main函数中代码执行顺序 1.设置时区 我们要设置成 CST 时区,以保证正确地显示日期.时间. 我们常看到的时区有如下几个: PST:美国太平洋标准时间, ...
- 【总结篇】继承中的执行顺序
作者:✿✿ xxxflower. ✿✿ <总结篇> 这个专题就记录一些自己在练习中所学习到的. 包括一些不熟悉的芝士点和一些小的细节. 今天我们来总结一下继承中的执行顺序. 首先执行静态的 ...
- 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
今天无意中看到有关Invoke和BeginInvoke的一些资料,不太清楚它们之间的区别.所以花了点时间研究了下. 据msdn中介绍,它们最大的区别就是BeginInvoke属于异步执行的. Cont ...
- 关于C语言中表达式运算顺序(优先级、结合性、副作用、序列点)的讨论以及c语言未定义行为
什么是优先级 到底什么是c语言的优先级? 我以前看了国内的很多教程,对于优先级的描述大多都是这样说的"优先级是用来决定当多个运算符出现在同一个表达式中时,先执行哪个运算符".其实这 ...
- java中程序执行顺序
①在java中执行顺序 一 静态初始化块 二 非静态初始化块 三 构造器 四 父类构造器 ② java中的赋值顺序 一 静态初始化块直接赋值 二 非静态初始化块直接赋值 三 父类继承的属性已赋值 四 ...
- 递归过程中语句执行顺序
递归的两种模式 模式一 //递归的过程中在"递"的过程中解决问题 function function_name(Max_argument){if(end_condition){en ...
- SqlServer中sql执行顺序
sql查询语句的处理步骤,代码清单 --查询组合字段 (5)select (5-2) distinct(5-3) top(<top_specification>)(5-1)<sele ...
- SQL语句中的执行顺序
这也是一篇不完全的翻译,有兴趣的读者可以查看原文. 下面的SQL语句的执行顺序只是逻辑上的顺序,在实际中优化器会选择最省时省力的顺序: FROM:这个只需要说一点的是JOIN这一步包含在FROM里面, ...
- Java中继承执行顺序
目录 继承执行顺序 类中的资源分类: 在子类中创建main方法 在无关类中创建main方法 拓展 代码块 权限修饰符 继承执行顺序 类中的资源分类: 静态成员变量, 静态代码块, 静态方法, 非静态成 ...
最新文章
- 第三方网站实现绑定微信登陆
- 横向ListView(四) —— 添加滚动条
- 码神日志N0.1|专场邀请:深度解析音视频技术(内有福利哦~)
- 函数--函数的快速体验
- linux ubuntu安装 mono,在 Ubuntu Server 上安装配置 Mono 生产环境
- perl数组硬引用_Perl 继续前行,Perl 7 将是下一代(硬核老王点评版)
- Html5 Canvas 百行代码实现扫雷
- 【微信篇】取证遇到微信昵称、微信号、微信账号、微信ID一次性区分清楚
- 生信识图之 点图进阶-3(MA)
- 成功解决failed: The TLS connection was non-properly terminated
- ZEALER王自如品味逼格感悟
- Mysql与Postgresql常用命令比较
- [转] Android开发环境的搭建 Android虚拟机搭建 安卓开发环境搭建
- Excel 2003 VBA编程参考
- python+django+vue+Elementui人力资源管理系统
- 【读书笔记】c和指针
- python 拉普拉斯锐化_(二十四)用二阶微分(拉普拉斯算子)实现图像锐化
- 江西理工大学理学院计算机,2016年江西理工大学理学院计算机科学与技术(加试)之C程序设计复试笔试最后押题五套卷...
- 【tio-core】1、tio-study是学习t-io的第一步
- 关系数据库和非关系数据库