tcl:使用lmap

时间:2016-01-07 22:25:19

标签: tcl

我有以下输入:{x y z}并且需要输出为{$ x $ y $ z} 使用appendforeach

执行此操作非常简单
set args {x y z}
#---------------------------------
# using append
#---------------------------------
set result {}
foreach i $args {
    append result " \$[set i]"
}
puts $result ;# $x $y $z

但是当我尝试使用lmap时,我收到以下错误'unknown command'$ x'` 我尝试了通常的引用技巧,但它没有用。

#---------------------------------
# using lmap
#---------------------------------
# results in  
# unknown command '$x'
lmap i $args { \$[set i] }

2 个答案:

答案 0 :(得分:2)

您需要在lmap命令的脚本主体中使用命令。也许

lmap i $args { string cat \$ $i }

根据Donal的建议:

using System.IO;
using System.Security.Cryptography;

public string checkMD5(string filename)
{
    using (var md5 = MD5.Create())
    {
        using (var stream = File.OpenRead(filename))
        {
            return Encoding.Default.GetString(md5.ComputeHash(stream));
        }
    }
}

答案 1 :(得分:1)

你也可以使用set,但方式略有不同:

lmap i $args {set i "\$$i"}

[也就是说,除了在对Glenn的答案的评论中提到的像Donal一样使用string cat时]