zoukankan      html  css  js  c++  java
  • TCL之基本语法1

    TCL之基本语法1

    1:set  and puts

    set就是变量声明,这个声明在需要使用的指令下会自动执行,不会出现没有声明的错误。但是对于puts这类定向访问的是不能没有声明的。这里简单理解TCL中的变量:以字符串的形式存在,具体的值由$符号访问。访问之前必须已经有声明。

    set x 0
    puts $x
    puts x

    两个puts都是可以显示结果的,掐前一个是值,后一个是字符。

    2:expr and []

    TCL中的指令长度是确定的,由关键字决定。每个参数使用空格区分。如果需要将指令内的某个参数嵌套其他指令,则需要使用[]来确认嵌套指令的范围。expr是取算数计算的结果的指令,参数就是算数表达式。

    set x 0
    set x [expr $x+1]
    puts $x

    最后的结果是1,第二句语句就是将x加1.

    3:list and {}

    前面介绍如何嵌入指令,同样含有空格的字符串也是需要嵌入的(某些参数需要带有空格及特殊字符的字符串作为参数)。使用{}可以将内部的内容转化为特殊字符串变量,在TCL中为list型变量。list作为参数时,内部的符号都是由对应指令控制的,而不是按照指令解释。这里有许多对list操作的指令,以后有时间详细分析。

    set x {1 2 3 {1 2} 2 {4 5}}
    puts $x

    x的值就是后面的一串list型变量

    4:if and elseif

    TCL中的条件判断语句。

    if { $x==0 } {
        set x 1
        puts $x
    } elseif { $x==1 } {
        set x  2
        puts $x
    } elseif { $x==2 } {
        set x 3
        puts $x
    } elseif { $x<11 } {
        set x [expr $x+1]
        puts $x

    具体的形式和C语言相似,注意参数只有两个,每个都用{}声明,且参数间使用空格区分。

    5:while and for

    TCL中的循环语句,参数位置和C语言相似,声明按照TCL语法即可。

    while { $x<10 } {
    if { $x==0 } {
        set x 1
        puts $x
    } elseif { $x==1 } {
        set x  2
        puts $x
    } elseif { $x==2 } {
        set x 3
        puts $x
    } elseif { $x<11 } {
        set x [expr $x+1]
        puts $x
    }
    }
    
    for {
        set i 0
        
    } { 
        $i<10
    } { 
        incr i 1
    } { 
        puts i=$i
    }

    while两个参数,第一个循环条件,第二个执行体。for有四个参数,第一个初始执行体(开始前执行一次),第二个循环条件,第三个条件执行体,第四个循环执行体。每个参数按照C语言中的for可以完全对应。

    6:foreach

    list循环结构,这是比较特殊的循环。其判断条件是list型变量的长度及读取尺度,执行体和for是一样的。第一个参数是读取长度及缓存变量,第二个是待读取的list型变量。第三个是执行体。

    set b " "
    set a {10 100 2300 {1} }
    foreach i $a {
        set b [linsert $b 0 $i]    
        puts $i
        puts $b
    }
    
    set x {}
    foreach {i j} {a b c d e f} {
    lappend x $j $i
    puts x=$x
    }

    第一个foreach中,读取长度是1(i只有一个字符),缓存变量是i,待读取的list(可以直接写,也可以是已经存在的,已存的需要加$读取符),执行的就是最后的参数的内容。linsert是字符插入指令,这里暂时不解释。

    第二个就是将长度换成2,缓存变量变成i和j,其他的是一样的。

    7:eval and source

    eval是命令解读指令。source是调用外部文件的指令。

    #!/bin/sh
    # eval_source.tcl 
    exec tclsh "$0" ${1+"$@"}
    eval set b 2 ;set b 4
    puts $b
    
    set cmd "puts "I love you ""
    eval $cmd
    
    source D:/Library/TCL_design/T1_workspace/A3_string.tcl

    这里cmd声明为字符串(真正的和C语言中一样的字符串,注意转义字符的使用),可以将命令转化为字符串,由eval解释执行。这里可以使用其他系统命令。source就是直接调用外部可执行的文件。

  • 相关阅读:
    SOLID (面向对象设计) 基本原则
    进化计算安排
    Python matplotlib绘图学习笔记
    Python 语法2
    Python 语法1
    C++入门程序作业3
    C++入门程序作业2
    C++入门程序作业1
    SE1-soc入手又有的东西可以玩了
    pointer to function
  • 原文地址:https://www.cnblogs.com/electricdream/p/13425095.html
Copyright © 2011-2022 走看看