首页 > 其他分享 >02-Tcl输出、赋值与替换

02-Tcl输出、赋值与替换

时间:2023-01-16 17:56:48浏览次数:40  
标签:02 输出 set 变量 puts Tcl 替换 赋值

2 Tcl输出、赋值与替换

2.1 puts

Tcl的输出命令是puts,将字符串标准输出channelled。语法中两个问号之间的参数为可选参数。

# 例1
puts hello

# 输出
hello

# 例2
puts -nonewline "hello hello"

# 输出
hello hello 

  • 如果输出一段有空格的文本,则要用双引号("")或花括号({})起来。
  • -nonewwhile选项告诉puts不输出回车换行
    注意:双引号和花括号的作用是将多个词组织成一个变元,但是""和{}是由区别的。""在进行替换操作的时候,前者允许替换操作发生;{}会阻止替换。

2.2 set

set varName [value]
unset vaName
  • set:变量定义和赋值命令,不必制定变量值得类型,因为变量值得类型只有一种--字符串。在为变量进行赋值的时候,会为变量开辟一段内存空间来存储变量值
  • set VarName不跟变量的值,如果变量已经定义,则返回变量的值,效果和puts相同;变量不存在会返回错误信息。相当于查询的作用。
  • unset与set的作用相反,它取消变量的定义,并释放变量所占的内存空间
  • 通过前置的“$”符,可以引用变量的值(替换)。
set a Hello       # 定义变量a并为其赋值
puts $a           # a=Hello

set a "Test Tcl"  # 重新给a赋值
set a             # 输出Test Tcl

puts a            # 输出字符a

set b $a          # 定义变量b,并将a的值赋值给b  b=Test Tcl
puts $b           # b = Test Tcl

unset a           # 释放变量

puts $a           # 试图输出未定义的变量值,会进行输出
  • puts $a由两步完成:首先用a的值替换$a,替换后的命令变为puts {Test Tcl},然后输出字符串。也就是说先替换后输出
  • 数组定义在后面进行介绍。

2.3 替换

2.3.1 $

$实现引用替换,用来引用参数值。
tcl在使用$进行引用替换的时候,只会进行一次解释,嵌套使用$$xxxx,只有一个起作用。

set foo oo     
set dollar foo

set x $$dollar        # x = $foo

set y {$foo}          # y = $foo  {}阻止替换

set z $x              # z = $foo
  • $$dollar,将$dollar用dollar的值foo进行替换,前面的$不起作用,作用字符输出。

2.3.2 []

方括号[]书写完整的命令替换,[]中的执行后,返回结果。

set b [set a 5]        # set a 5命令输出的结果赋值给b b=5
puts b                 # b = 5

set c [expr 5*10]      # 将乘式的结果赋值给c
puts c                 # c = 50

2.3.3 ""和{}

""和{}将多个单词阻止在一起组成一个参数,也是一种替换操作。一般在""内进行正常替换,在{}中的替换可能被阻止当{}用于组织算数表达式、if条件和函数内执行体的代码块的时候,不会阻止替换。

set s hello

puts stdout "The length of\"$s\" is [string length $s]"

=>The length of hello is 5

#  ""内再使用双引号的时候要使用转义字符。
# string length $s 计算字符串s的字符串长度

puts stdout {The length of $s is [string length $s]}   # 替换操作被阻止
=>The length of $s is [string length $s]

set x 10
set y 20
set z [expr{$x + $y}]
=>30

if{$x == 10} {puts "x = $x"}
=>x=10
  • expr表示进行数学运算,要用[]括起来
  • 用{}来组织算数运算表达式,不阻止$替换操作
  • 在条件语句中,用{}来界定条件体和执行体,不阻止内部的替换

2.3.4 \

反斜杠“\”的作用是引用特殊字符或者续行
应用特殊字符的操作是告诉TCl解释器需要使用一些特殊的字符,如$符或者完成特定功能比如\n,\t,\b.....,相当于转义字符的作用。
如果一条语句过长,可以使用“\”,将一行语句分为多行进行书写。

set x 100
set y $x          # y = 100

set z "\$x"       # z = $x   \$表示告诉tcl使用$符号

puts "he \nllo"   # \n换行
=>he
  llo

puts "\a"         # 振铃

set b [puts \
   $y] 

注意:当用set命令为参数,赋值,并""用作续行符的时候,不要在反斜杠后面同一行上输入任何符号,包括空格和制表符。否则反斜杠(\)就起不到续行的功能,容易引起错误。

标签:02,输出,set,变量,puts,Tcl,替换,赋值
From: https://www.cnblogs.com/Icer-newer/p/17055184.html

相关文章

  • C语言电话号码查询系统[2023-01-16]
    C语言电话号码查询系统[2023-01-16]一、课程设计(论文)题目电话号码查询系统说明:设计哈希表,实现电话号码查询系统。二、本次课程设计(论文)应达到的目的C语言、面向对象......
  • 2022年总结 2023年计划
    2022年初,定的目标是工作之余掌握cocosCreator,然后能做一款小游戏出来,摸清楚道路完成的目标:小游戏已微信上架,还初步了解了spine的用法,能自己画一些原画,然后做成spine的......
  • hbuilderx 项目上传至git 私库 gitea20220908
    1、搭建git私库[gitea]   2、hbuilderx 新建项目oapm  3、初始化的项目本地仓库:项目oapm进入项目本地文件夹根目录右键GitBash,输入入命令:gitinit   项目本地......
  • C/C++数据结构题目[2023-01-16]
    C/C++数据结构题目[2023-01-16]以下内容二选一题目1:校园导航系统的设计与实现问题描述:校园导航系统能够提供校园内场所信息和路径查询。以传媒大学校园为例,校园内包......
  • sc stream-rabbit 优化版、绑定器-自定20230112
     一、生产者【2062】     1、pom.xml<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-star......
  • 回顾2022,展望2023,一个普通98年程序员的自述和分享
    一、前言第一次记录自己的年度总结,一直想写,不知从何写起;其实也是自己这两年来了解到的东西,分享给大家,虽然是个井底之蛙,但是也要勇于说出自己的看法,欢迎大佬指导哈。可能自......
  • sc stream-rabbit笔记20230111
                    自定义通道   ......
  • 〈2023-01-16〉【自用】委托单登记工具
    importtkinterastkfromtkinter.filedialogimportaskdirectoryimportosfromdocximportDocumentfromxlwtimportWorkbookimporttkinter.messageboximportsysg......
  • 2020-2021 ACM-ICPC Latin American Regional
    K-Keylogger就是你可以显然的发现一个\(O(n^3)\)级别的动态规划。设\(dp_{i,j}\)表示第\(i\)位密码,现在按的键是\(j\)的答案。然后发现矩阵的每一行是单调递......
  • C/C++学生成绩管理系统[2023-01-16]
    C/C++学生成绩管理系统[2023-01-16]《C\C++语言课程设计》指导书一、课程设计概要项目名称:学期评优方案设计适用学期:2022年秋季学期适用班级:07D229-07D22C班二、项目......