• TCL ARRAY


    TCL 中的数组和其他高级语言的数组有些不同:Tcl 数组元素的索引,或称键值,可以是任意的字符串,而且其本身没有所谓多维数组的概念。数组的存取速度要比列表有优势,数组在内部使用散列表来存储,每个元素存取开销几乎相同,而列表的存取数据花非时间与其长度成正比。

    1.

    元素使用 set 命令来定义和赋值:

    [语法]set  arrName(indexvalue

    也可以用 array 命令来定义一个数组:

    [语法]array set arrName { index1 value1 index2 value2 ...

    Tcl 数组索引的值不象其他高级语言如 C 语言那样,要求一定是整数。Tcl 允许索引值为包括数字字符在内的所有合法字符组成的字符串。

    array set arr1 ""              ;#定义了一个空数组 
    set array01(5) "Hello World" 
    结果=> Hello World 
    
    puts $array01(5) 
    结果=>Hello World 
    
    set array01(Hello) World 
    结果=> World 
    
    puts $array01(Hello)  
    结果=> World 
    
    array names array01    ;#array names 命令显示数组元素名 
    结果=> Hello 5 
    
    array set arr2 {1 a 2 b 3 c 4 d} 
    array names arr2 
    结果=> 4 1 2 3 
    
    parray arr2                    ;# 输出数组全部内容 
    结果=>  
    arr2(1) = a 
    arr2(2) = b 
    arr2(3) = c 
    arr2(4) = d 


    2.多维数组

    在有些时候,可能需要象 C 语言这样:

    int arr[2][2]
    
    arr[0][0] = 100

    来定义一个多维数组来处理数据。Tcl 并没有直接支持这种数组的格式,使用者自己可以定

    义所谓的多维数组,如:

    复制代码
    set arr(0,0) 100
    
    set arr(0,1) 200
    
    parray arr
    
    结果=> arr(0,0) = 100
          arr(0,1) = 200


    1. array get 命令提取数组索引、元素值对并将这些值对组织成一个列表。而 array  set 命令 则将一个列表(数据要成对)转换成一个数组。array set arr [list a AAA b BBB c CCC d DDD] 

    array size arr                  ;#数组元素个数 
    结果=> 4 
    
    parray  arr 
    结果=>  arr(a) = AAA arr(b) = BBB arr(c) = CCC arr(d) = DDD 
    
    set l1 [array get arr] 
    结果=> d DDD a AAA b BBB c CCC 



    2.
    array names命令

        array names 返回所有元素索引名与模式 pattern 匹配的元素索引名列表。模式 pattern 和 string match 的模式格式相同。如果 pattern 没有指定,则返回所有数组元素索引名列表。

    array set a [list  "School,BUPT" "BUPT" "School,NJU" "NJU" "School,NJUA" "NJUA"] % parray a 
    结果=> a(School,BUPT) = BUPT a(School,NJU)  = NJU a(School,NJUA) = NJUA 
    
    array names a "School,*" 
    结果=>School,NJU School,NJUA School,BUPT 
    
    array names a "School,N*" 
    结果=>School,NJU School,NJUA 
    
    array names a 
    结果=>School,NJU School,NJUA School,BUPT












  • 相关阅读:
    Vue之利用vueRouter的元信息实现页面的缓存
    Vue之directives所遇小bug
    《CSS世界》读书笔记
    git 错误error: failed to push some refs to
    v-text指令消除刷新慢显示替换的过程
    防抖案例实战之仿百度搜索框即时搜索
    数字金额转大写金额
    常见前端安全
    sendmail邮箱部署设置
    Shell之监控cpu、内存、磁盘脚本
  • 原文地址:https://www.cnblogs.com/lelin/p/12768844.html
Copyright © 2020-2023  润新知