RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Tcl系列文章:深入理解Tcl中的置換

電子工程師 ? 來源:未知 ? 作者:胡薇 ? 2018-08-28 08:03 ? 次閱讀

Tcl語言中有三類置換:變量置換、命令置換和反斜杠置換??梢哉f“置換”是Tcl的靈魂,同時(shí)也是讓初學(xué)者容易感到困惑的一個(gè)難點(diǎn)。很多初學(xué)者常會(huì)碰到這樣的情形:不希望發(fā)生置換時(shí)卻發(fā)生了或者希望發(fā)生置換時(shí)卻沒有發(fā)生,加之一些Tcl解釋器調(diào)試功能欠佳,往往讓初學(xué)者受挫,覺得自己的腳本發(fā)生了詭異的行為。實(shí)際上,Tcl的置換機(jī)制很簡(jiǎn)單,其行為也很容易預(yù)測(cè),只需記住如下兩條規(guī)則:

規(guī)則1:Tcl在解析一條命令時(shí),只從左向右解析一次,進(jìn)行一輪置換,每一個(gè)字符只會(huì)被掃描一次;

規(guī)則2:每一個(gè)字符只會(huì)發(fā)生一層置換,而不會(huì)對(duì)置換后的結(jié)果再進(jìn)行一次掃描置換

看一個(gè)典型的例子,在這個(gè)例子中,變量x被賦值為10,變量a被賦值為字符x。之后,給變量b賦值$$a。根據(jù)上述規(guī)則,Tcl從左向右對(duì)命令”set b $$a”進(jìn)行解析,掃描所有的字符,發(fā)現(xiàn)$$a時(shí),執(zhí)行變量置換,得到$x,同時(shí)只發(fā)生一層置換,不會(huì)對(duì)置換后的結(jié)果$x再進(jìn)行掃描置換(否則$$a中最左側(cè)也就是第一個(gè)$將被掃描兩次,與規(guī)則1沖突,)。因此,最左側(cè)的$并不會(huì)觸發(fā)變量置換,最終變量b的值將會(huì)是$x,而不是10。

根據(jù)上述兩個(gè)規(guī)則,理解如下腳本的執(zhí)行結(jié)果。

從Tcl代碼風(fēng)格的角度看,應(yīng)盡可能地將置換簡(jiǎn)單化,這意味著盡可能地將多層次嵌套的置換分解為更簡(jiǎn)單的層次置換,這可通過命令分解實(shí)現(xiàn)。同時(shí)避免在同一條命令中出現(xiàn)太多的置換,尤其避免出現(xiàn)太多復(fù)雜的不同類型的置換,這對(duì)代碼維護(hù)十分不利。此外,值得考慮的方法是建立“過程”,將復(fù)雜的操作隔離開來,從而增強(qiáng)代碼的可讀性和可維護(hù)性??催@樣一個(gè)例子,計(jì)算兩個(gè)字符串的總長(zhǎng)度,這里用到了三個(gè)命令:set、expr和stringlength。在計(jì)算str_len時(shí),使用了變量置換和命令置換,同時(shí)出現(xiàn)了命令嵌套。

對(duì)比另一種寫法,將嵌套拆分,代碼的可讀性便躍然紙上。

結(jié)論:

Tcl在解析一條命令時(shí)

-每個(gè)字符只會(huì)被掃描一次

-每個(gè)字符只會(huì)發(fā)生一層置換

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • TCL
    TCL
    +關(guān)注

    關(guān)注

    10

    文章

    1722

    瀏覽量

    88566
  • 置換
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    2019

原文標(biāo)題:深入理解Tcl中的置換

文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深入理解Android

    深入理解Android
    發(fā)表于 08-20 15:30

    深入理解和實(shí)現(xiàn)RTOS_連載

    和trcohili的帖子。深入理解和實(shí)現(xiàn)RTOS_連載1_RTOS的前生今世今天發(fā)布的是第一篇,"RTOS的前生今世"。通過軟件系統(tǒng)結(jié)構(gòu)的比對(duì)簡(jiǎn)要的介紹rtos為何而生。如果讀者對(duì)RTOS
    發(fā)表于 05-29 11:20

    深入理解和實(shí)現(xiàn)RTOS_連載

    和trcohili的帖子。trochili rtos完全是作者興趣所在,且行且堅(jiān)持,比沒有duo。深入理解和實(shí)現(xiàn)RTOS_連載1_RTOS的前生今世今天發(fā)布的是第一篇,"RTOS的前生今世"
    發(fā)表于 05-30 01:02

    深入理解lte-a

    深入理解LTE-A
    發(fā)表于 02-26 10:21

    深入理解STM32

    時(shí)鐘系統(tǒng)是處理器的核心,所以在學(xué)習(xí)STM32所有外設(shè)之前,認(rèn)真學(xué)習(xí)時(shí)鐘系統(tǒng)是必要的,有助于深入理解STM32。下面是從網(wǎng)上找的一個(gè)STM32時(shí)鐘框圖,比《STM32文參考手冊(cè)》里面的是中途看起來清晰一些:重要的時(shí)鐘:PLLCLK,SYSCLK,HCKL,PCLK1,..
    發(fā)表于 08-12 07:46

    對(duì)棧的深入理解

    為什么要深入理解棧?做C語言開發(fā)如果棧設(shè)置不合理或者使用不對(duì),棧就會(huì)溢出,溢出就會(huì)遇到無法預(yù)測(cè)亂飛現(xiàn)象。所以對(duì)棧的深入理解是非常重要的。注:動(dòng)畫如果看不清楚可以電腦看更清晰啥是棧先來看一段動(dòng)畫:沒有
    發(fā)表于 02-15 07:01

    為什么要深入理解

    [導(dǎo)讀] 從這篇文章開始,將會(huì)不定期更新關(guān)于嵌入式C語言編程相關(guān)的個(gè)人認(rèn)為比較重要的知識(shí)點(diǎn),或者踩過的坑。為什么要深入理解棧?做C語言開發(fā)如果棧設(shè)置不合理或者使用不對(duì),棧就會(huì)溢出,溢出就會(huì)遇到無法
    發(fā)表于 02-15 06:09

    深入理解應(yīng)用廣泛的QMatrix 技術(shù)

    深入理解應(yīng)用廣泛的QMatrix 技術(shù)作者:Hal Philipp 量研集團(tuán)首席技術(shù)官摘要在家電、消費(fèi)電子和手機(jī)應(yīng)用,觸摸傳感控制正在日益取代機(jī)電開關(guān)。觸摸傳感的流行獲有很強(qiáng)的
    發(fā)表于 02-06 17:08 ?28次下載

    深入理解Android之資源文件

    深入理解Android之資源文件
    發(fā)表于 01-22 21:11 ?22次下載

    深入理解Android》文前

    深入理解Android》文前
    發(fā)表于 03-19 11:23 ?0次下載

    深入理解Android:卷I》

    深入理解Android:卷I》
    發(fā)表于 03-19 11:23 ?0次下載

    深入理解Android網(wǎng)絡(luò)編程

    深入理解Android網(wǎng)絡(luò)編程
    發(fā)表于 03-19 11:26 ?1次下載

    老司機(jī)帶你深入理解ST庫的 assert_param 語句

    老司機(jī)帶你深入理解ST庫的assert_param語句
    的頭像 發(fā)表于 03-14 14:52 ?4250次閱讀

    深入理解MOS管電子版資源下載

    深入理解MOS管電子版資源下載
    發(fā)表于 07-09 09:43 ?0次下載

    深入理解深度學(xué)習(xí)的反(轉(zhuǎn)置)卷積

    本文首發(fā)于 GiantPandaCV :深入理解神經(jīng)網(wǎng)絡(luò)的反(轉(zhuǎn)置)卷積作者:梁德澎本文主要是把之前在知乎上的回答:反卷積和上采樣+卷積的區(qū)別...
    發(fā)表于 02-07 11:17 ?0次下載
    <b class='flag-5'>深入理解</b>深度學(xué)習(xí)<b class='flag-5'>中</b>的反(轉(zhuǎn)置)卷積
    RM新时代网站-首页