输出、赋值与替换

1. puts 

语法格式:

  •  puts ?-nonewline?  ?channelId? string 

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

示例:

  • puts hello
  • puts –nonewline "hello hello"   

字符串中如果有空格的话,一定要用" "或者{ }括起来。因为 Tcl 语句中各命令参数是以空格来分隔的,如果不用""{}括起来,字符串中的单词会被误认为多余的参数而出错。 双引号和花括号的作用是将多个词组织成一个变元,但他们是有差别的!这种差别就是在处理“替换操作”时,前者允许替换发生,而后者则可能会阻止替换。

-nonewline 选项告诉 puts 不输出回车换行  

2. set & unset  

语法格式:

  • set varName [value]
  • unset varName 

set变量定义和赋值命令。不必指定变量值的类型,因为变量值的类型仅一种—字符串。为变量赋值时,会为变量开辟一段内存空间来存储变量值 

unset:unset 命令与 set 命令作用相反,它取消变量定义,并释放变量所占的内存空间。 

通过前置“ $”符,可以引用变量的值(替换)。

set 命令也可以只跟变量而无变量值。若变量已经定义,则返回变量值,效果和 puts 类似。如果该变量不存在,则返回错误信息。

示例:

  • set a hello              #定义遍历a并赋值hello
    • => hello        #输出hello
  • puts $a                   #输出变量值
    • => hello        #输出hello
  • set a "Test Tcl"       #重新赋值
    • => Test Tcl     #输出Test Tcl
  • set a                        #输出变量值,此时不加$
    • => Test Tcl     #输出Test Tcl
  • puts $a                    #输出变量值,此时加$
    • => Test Tcl     #输出Test Tcl
  • puts a                      #输出字符'a'
    • a
  • set b $a                   #将a的值赋给b
    • => Test Tcl
  • puts $b   
    • => Test Tcl
  • unset a                     #释放变量           

puts $a 由两步完成:首先用 a 的值替换 $a,替换后命令变为“ puts {Test Tcl}”,然后输出字串。

3. "$"替换操作符

"$"符实现引用替换,用以引用参数值。Tcl 对替换只进行一遍解释,对嵌套的”$”不于理睬 

"$"嵌套替换示例:

  • set foo oo

    •  => oo

  • set dollar foo

    •  => foo

  • set x $$dollar    #嵌套$$

    •  => foo             #只解释一次,将"dollar"的值用dollar的值foo代替,等效于set x {$dollar},大括号{}阻止替换

  • set x {$foo}

    •  => $foo

  • set y $x

    •  => $foo        #一轮替换

4. "[]"替换符

方括号“ []”完成命令替换。用“ []”将一条命令括起来,命令执行完成后,返回结果。 

示例:

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

    •  => 5

  • puts $b

    •  => 5

  • set c [expr 5 * 10]

    •  => 50

5.  " " {} 替换符

双引号和花括号将多个单词组织成一个参数,也是一种替换操作。 ””{}内的替换如何进行呢?一般的原则是在" "内的替换正常进行,而在{}内的替换有可能会被阻止。 

6. “\”作用符

反斜杠“ \”的作用是引用特殊字符、续行。

  • 引用特殊字符的操作是告诉 Tcl 解释器需要使用一些特殊的字符,如$符,或完成特定功能,如打印换行、震铃等。
  • 续行的作用是如果一条语句太长不容易阅读,可以用“ \”来续行,这样一条语句可以多行完成。 

示例:

  • set x 100

    •  => 100

  • set y "$x"

    •  => 100

  • set y "/$x"    #引用$符

    •  => $x

  • puts "he\nllo" #回车换行 \n

    •  => he

                llo

 

posted @   小熊酱  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示