首页 > 其他分享 >tcl笔记

tcl笔记

时间:2023-05-23 17:22:58浏览次数:37  
标签:index set 变量 puts expr 笔记 tcl name

交互模式启动tcl

命令号里直接输入tclsh

分隔符

单词分隔符

空白字符

命令分隔符

分号(;) 或者 回车(\n)

变量

变量赋值

变量赋值

第一个参数名字为varname的变量

set varname value

动态变量

% set a x
x
% set $a 5
5
% puts $a
x
% puts $x
5
% puts $$a
$x
% eval puts $$a
5

列表

一组用空白字符分割的元数,可以用双引号、大括号或者转移空白字符分割

% set tmp_list "1 2 3 4 5"
1 2 3 4 5
% set tmp_index 4
4
% puts [lindex $tmp_list [expr $tmp_index -1 ]]
4

关联数组

% set person(name) Jack
Jack
% set person(age) 29
29
% set person(position) enginerr
enginerr
% set person(123) xyz
xyz
% puts [array names person]
position age name 123
% puts $person(name)
Jack

字典

% dict set mydict a {b c}
a {b c}
% dict get $mydict a b
c

文件句柄

set myfile [open "filename" r]

布尔值

布尔值,可以表示为1,yes,YES,TURE 或 true 为真值和0,no , NO, FALSE或 false 为假值。

变量使用

$varname

置换

  • 变量置换 $

  • 命令置换 []

  • 转移置换 \

括号和引号

大括号(Braces),在大括号内的信息不能被替换,相当于一个隔离墙,如果需要替换可以使用引号(double quote)。

方括号(Square brackets),创建嵌套的命令,既然是嵌套就是在内部,按照替换原则,越内部的先被替换掉。

双引号(double quote),将一串字符并成一个单一的 word,就是让 Tcl 解释器明白即使引号内部有很多空格,也是作为一个 word 来处理。 如果中间没有空白字符可以省略双引号

小括号(Round brackets),当这个出现在变量中,做为数组 index 的 container,比如 set mine(name) Steve,name 就是数组的一个 index。

字符串

字符串处理

正则

控制流

if

if {逻辑运算 / 关系运算 等布尔表达式} {  #虽然要进行表达式运算,这里不用使用 expr 命令

} elseif {布尔表达式} {
# elseif 可选
} else {
 # else 可选
}

foreach/for/while

while

#!/usr/bin/tclsh

set a 10

#while loop execution
while { $a < 20 } {
  puts "value of a: $a"
  incr a
}

for

#!/usr/bin/tclsh

# for loop execution
for { set a 10} {$a < 20} {incr a} {
  puts "value of a: $a"
}

foreach

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
foreach index [array names personA] {
  puts "personA($index): $personA($index)"
}

 

break

同其他语言

continue

同其他语言

switch

#!/usr/bin/tclsh

set grade B;

switch $grade {
  A {
    puts "Well done!"
  }
  B {
    puts "Excellent!"
  }

  C {
    puts "You passed!"
  }
  F {
    puts "Better try again"
  }
  default {
    puts "Invalid grade"
  }
}
puts "Your grade is  $grade"

过程函数

定义过程

作用域

文本处理

set myfile [open "filename" r]

其他

改变运算符号的优先级

% set a 20
20
% set b 10
10
% set c 15
15
% set d 5
5
% set e [expr[expr $a+$b] * $c /$d]
invalid command name "expr30"
% set e [expr [expr $a+$b] * $c /$d]
90
% set e [expr ($a + $b) * $c /$d]
90
% set f [expr !($a && $b)]
0

 

 

 

https://blog.csdn.net/qq_42135020/article/details/127971074

https://zhuanlan.zhihu.com/p/39979318

https://www.yiibai.com/tcl/tcl_arrays.html

常用命令

puts

set 变量赋值

expr 表达式运算 :数学表达式运算、逻辑运算、关系运算、三元运算

incr 数字加一 类似其他余元的 ++

array names arrayName 数组key列表

array size arrayName 数组大小

string tolower $stringName

format 类似c种的printf

scan [scan "被扫描的字符串" {%[模式]} m] #将被扫描字符串中符合模式的部分 赋值给变量m

标签:index,set,变量,puts,expr,笔记,tcl,name
From: https://www.cnblogs.com/halu126/p/17425828.html

相关文章

  • DTCloud中台共用模块开发规范
    目前中台仓库代码的运行依赖dtcloud,在贡献中台模块的时候,可能会存在大量重复且能共用的模块。这时候就希望能将这部分代码封装起来,能供其他模块方便使用。直接的方法是提供一个commons包来存放共用代码,包括以后代码的新增、修改都在这里进行。在中台仓库中添加直接from...import会......
  • ts常用语法笔记(Omit,Pick,Partial,Required)
    1.Omit【某个类型中去除某些项后的新的数据类型】-需要两个参数:Omit<type,string>,第一个参数为要继承的type类型,第二个参数为想要去除的key的字符串,存在多个时用|分隔源码:typeOmit<T,Kextendskeyofany>=Pick<T,Exclude<keyofT,K>>e.g.exporttypeAsyncBu......
  • 1、Nodejs学习笔记
    1、fs模块fs模块名称,可以用来操作文件,比如:文件创建,删除,重命名,移动,写入,读取2、来一个fs模块写入的例子//第一个参数文件名称,不存在会创建,第二个参数:写入内容,第三个参数:是写入情况返回值,如果写入成功返回null,如果失败返回错误信息fs.writeFile('','',err=>{})//异步fs.......
  • 《数字图像处理》冈萨雷斯(第四版)学习笔记
    前言:基于电科大830考研大纲。本人非图像处理研究方向的学生,因考试需要,自己整理的学习笔记,本文仅供参考,内容若有出入请自行补充。希望对大家有所帮助。 电科大830考研大纲参考网址来源:https://blog.csdn.net/sinat_35907936/article/details/103743934http://www.kaoyanmiji.c......
  • 《梦断代码》读书笔记03
    我过去是怎么做的:对我来说,科技带来了很多好处,如便利的社交媒体、快速的信息交流和新兴的技术创新等等。因此,我一直认为,科技公司为人类带来了很多的利益和希望,并且可以继续推动社会的进步与创新发展。这样做为什么不好:但在阅读《梦断代码》后,我开始看到了科技行业存在的难题和负......
  • DAY11笔记及补充
    今日默写:1.while循环2.for循环3.for in循环4.定义一个有名函数,并调用5.定义一个匿名函数,并调用6.HTML实现文件上传的标签7.实现prompt结合javascript实现四则运算的代码功能得分:100补充:1.注释:JavaScript不会执行注释。可以添加注释来对JavaScript进行解释,或者提高代码的可......
  • CLIP-S^4:Language-Guided Self-Supervised Semantic Segmentation论文阅读笔记
    摘要作者提出了CLIP-S4,借助自监督像素表示学习和V-L模型实现各种语义分割任务,不需要使用任何像素级别标注以及未知类的信息。作者首先通过对图像的不同增强视角进行像素-分割对比学习来学习像素嵌入。之后,为进一步改善像素嵌入并实现基于自然语言的语义分割,作者设计了由V-L模型指......
  • 学习笔记-Spring事务
    学习的文章小姐姐非要问我:spring编程式事务是啥?(qq.com)一文搞懂什么是事务-知乎(zhihu.com)阿里3面:Spring声明式事务连环炮,让我措手不及。。(qq.com)带你读懂Spring事务——事务的传播机制-知乎(zhihu.com)spring事务失效的12种场景_事务什么时候失效_hanjq_cod......
  • Unity3D高级编程主程手记 学习笔记二:C#技术要点
    1.Untiy3D中C#的底层原理Unity底层在运行C#程序时有两种机制:一种是Mono,另一种是IL2CPP。Mono存在的目的是为了跨平台,因为最初C#只支持Windows。而IL可以看成是一种汇编语言且完全基于堆栈,必须运行在虚拟机上。也就是说C#会被编译器编译成IL,当需要他们时就会被实时的加载到运行库......
  • Java开发笔记之将一个List拷贝到另一个List的问题
    0x00概述在对List数据进行不同的数据操作的时候,例如分支1将List按照A来排序,分支2将List按照B来排序,需要将List进行数据层面的拷贝; 0x01错误的操作仅仅是List的引用,并没拷贝List内的数据进行处理List<String>list1=newArrayList<>();List<String>list2=newArrayL......