tcl指令碼學習十三:列表命令集

來源:互聯網
上載者:User

標籤:

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\n"
// 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]\n"
//輸出 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\n"
// split 是把一個字串 分隔開, 後面的 “/”的分割的字元
set z [list puts "arg 2 is $y" ]
puts "A command resembles: $z\n"

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 參數,則命令返回當前已經註冊的命令,若沒有註冊命令則返回Null 字元串

tcl指令碼學習十三:列表命令集

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.