zoukankan      html  css  js  c++  java
  • tcl脚本学习十三:列表命令集

    lesson 13 : 列表命令集

    list arg1 arg2 ... 创建一个列表
    lindex list index 返回列表 list 中的第 index 个元素(element)值
    llength list 计算列表 list 元素个数


    example ① : 创建一个List ,List的用法

    1. set l1 [list Sun Mon Tues]
    =>Sun Mon Tues ;#列表 l1 含有三个元素

    2. set l2 [list $l1 Wed]
    => {Sun Mon Tues} Wed ;#列表 l2 中含有两个元素。第一个元素用花括号括起来。

    3. set l3 [list { a $b c} d]
    =>{a $b c} d ;#花括号阻止引用替换

    4. set l3 [list "a $b c" d]
    => {a 10 c} d


    example ② : llength 命令

    llength 命令可以获得一个列表内元素的个数。

    set l1 "1 2 3 4 5"
    =>1 2 3 4 5 ;#定义了一个字符串
    set num [llength $l1] ;#这里 l1 被看作列表了
    =>5


    example ③ : lindex的学习

    lindex 命令返回列表中指定位置的特定元素。列表索引从 0 开始记数!

    %set x { 1 4 5 }
    => 1 4 5
    % lindex $x 1
    =>4
    %lindex $x end
    =>5
    %lindex $x end-1
    =>4

    example ④ : split的学习

    split 命令的作用与 join 的作用相反,它接收一个字符串,并根据给定的字符将其分割转换成
    一个列表。用于分割的字符应该在字符串中存在,否则 split 因为没有搜索到对应字符而将整个
    字符串作为唯一列表元素而返回,即返回原字符串。


    set y [split 7/4/1776 "/"]
    puts "We celebrate on the [lindex $y 1]'th day of the [lindex $y 0]'th month "
    // split 是把一个字符串 分隔开, 后面的 “/”的分割的字符


    example ⑤ : foreach的学习

    foreach为遍历函数 foreach 命令/控制结构会遍历整个列表,逐次取出列表的每个元素的值放到指定变量中

    1. 单个遍历
    set l1 "I am zhou li "
    foreach elem $l1 {
    puts "---$elem---"
    }
    =>---I---
    ---am---
    ---zhou---
    ---li---

    2.多个遍历

    foreach {x1 x2} {Orange Blue Red Green Black} x3 {Right Left Up Down} {
    puts [format "x1=%8s x2=%8s x3=%8s" $x1 $x2 $x3]
    }
    => x1= Orange x2= Blue x3= Right
    x1= Red x2= Green x3= Left
    x1= Black x2= x3= Up
    x1= x2= x3= Down

    example ⑥ : format的学习

    字符 说明
    d 有符号整数
    u 无符号整数
    i 有符号整数。变元可以是十六进制(0x)或八进制(0)格式
    o 无符号八进制数
    x 或 X 无符号十六进制数
    c 将整数映射到对应的 ASCII 字符
    s 字符串
    f 浮点数
    e 或 E 科学记数法表示的浮点数
    g 或 G 以%f 或%e 格式(要短一些)来表示的浮点数
    表 4-3 格式标志符
    标志 说明
    - 使字段左对齐
    + 字段右对齐
    space 在数字前加一个空格,除非数字带有前导符号。这在将许多数字排列在
    一起时非常有用
    0 使用 0 作为补白
    # 前导 0 表示八进制,前导 0x 表示十六进制数。浮点数中总要带上小数
    点。不删除末尾的 0(%g)

    1.
    #要取第 2 个变元值,即 5。位置说明符的格式为 2$,并用来引用符号$:
    %set res [format "%2$s" 1 5 9]
    =>5
    %puts $res
    =>5
    %set str [format "%3$s %1$s %2$s" "are" "right" "You"]
    => You are right

    2.
    %format "%x" 20
    =>14 ;# 将 20 转换为十六进制数
    %format "%8x" 20
    => 14 ;# 将 20 转换为十六进制数,8 位数据宽度,右对齐
    %format "%08x" 20
    =>00000014 ;#与上一命令相似,但用 0 添齐
    %format "%-8x" 20
    =>14 ;#宽度 8 位,左对齐
    %format "%#08x" 20
    =>0x000014

    set x "a b c"
    puts "Item 2 of the list {$x} is: [lindex $x 2] "
    //输出 list列表中 第二个元素,详见lindex的用法
    set y [split 7/4/1776 "/"]
    puts "We celebrate on the [lindex $y 1]'th day of the [lindex $y 0]'th month "
    // split 是把一个字符串 分隔开, 后面的 “/”的分割的字符
    set z [list puts "arg 2 is $y" ]
    puts "A command resembles: $z "

    set i 0;
    foreach j $x {
    puts "$j is item number $i in list x"
    incr i;
    }


    fconfigure的学习

    fconfigure 命令用来设置或者查询 I/O 通道的属性。通道的默认设置对大多数情况来说都是
    适用的。如果你是执行事件驱动的 I/O,则可能想将其设置为非阻塞模式

    fileevent的学习

    #fileevent 命令为 I/O 通道注册一条命令,当通道变为可读或可写的时候该命令被执行
    如果 fileevent 命令中没有 script 参数,则命令返回当前已经注册的命令,若没有注册命令则返回空字符串

  • 相关阅读:
    十层框架
    大规模web服务开发技术
    ASP.NET三层架构基础详细操作图文教程
    ASP.NET MVC4中的异步控制器
    集成多个子系统的单点登录(网站入口方式)附源码
    我的C#全能Excel操作(无需Office,不使用XML)
    代码重构——程序员应有的基因
    通过监听Windows消息对复合控件进行整体控制
    Android游戏框架
    Ext.NET
  • 原文地址:https://www.cnblogs.com/gold-life/p/5738224.html
Copyright © 2011-2022 走看看