如何从tcl中的foreach循环返回值

克里希

我有目录中所有文件的列表。我将它们存储在一个变量中file_list我想获取每个文件的尾名。我的做法是这样的。

set file_list [list /a/b/a.txt /a/b/b.txt /a/b/c/file1.tcl /a/b/c/file2.tcl]

proc file_tail {filename} {
   set x {}
   set f_tail [file tail $filename]
   lappend x $f_tail
return $x

}

foreach ft $file_list {
    set f_tail [file_tail $ft]
}

f_tail只包含存储的最后一个值,即“file2.tcl”请指导我。我想要文件的所有尾值的列表

唐纳德研究员

如果您要列出所有尾巴,请执行以下操作:

set f_tail {}
foreach ft $file_list {
    lappend f_tail [file tail $ft]
}

如果您的辅助函数要执行lappend,则需要将保存列表的变量保留在过程之外:

proc file_tail {filename listVariable} {
    upvar 1 $listVariable theList
    set f_tail [file tail $filename]
    lappend theList $f_tail
}

set tails {}
foreach ft $file_list {
    file_tail $ft tails ;  # <<< NAME, so not $tails as that would READ the variable
}

请注意,我们传入变量名称tails外部)并upvar 1在过程内部使用以创建theList可更新的链接局部变量(内部)。但是,您不能通过传入列表值来实现Tcl 对其值使用写时复制语义。您需要注意变量名称与其包含的值之间的区别;他们不一样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在JavaScript中的forEach循环内返回值

来自分类Dev

如何从循环返回值?

来自分类Dev

如何从dart中的map.forEach返回值?

来自分类Dev

如何在rust中的for循环内返回值?

来自分类Dev

我如何在C中循环后返回值

来自分类Dev

如何在递归for循环函数中返回值?

来自分类Dev

从Powershell中的ForEach中返回值

来自分类Dev

如何从无限循环返回值?

来自分类Dev

从JavaScript中的循环返回值?

来自分类Dev

从Clojure中的循环返回值

来自分类Dev

在解析XML字符串时从字符串中的foreach循环返回值

来自分类Dev

forEach不像for循环那样向外部函数返回值

来自分类Dev

如何从gwidgets中的函数返回值

来自分类Dev

如何从函数中的exec返回值?

来自分类Dev

如何从emberjs中的操作返回值

来自分类Dev

如何忽略VBA中的返回值?

来自分类Dev

如何从Swift中的Closure返回值?

来自分类Dev

如何从gwidgets中的函数返回值

来自分类Dev

如何从scala中的if块返回值

来自分类Dev

如何从两列中返回值?

来自分类Dev

如何忽略VBA中的返回值?

来自分类Dev

如何从Java中的函数返回值?

来自分类Dev

如何从 groovy 中的 TimerTask 返回值

来自分类Dev

在C ++ 11中的循环中为函数的返回值分配内存:如何优化?

来自分类Dev

如何在批处理文件脚本中循环打印程序的返回值?

来自分类Dev

在C ++ 11中的循环中为函数的返回值分配内存:如何优化?

来自分类Dev

for循环Java返回值

来自分类Dev

tcl中的嵌套foreach循环

来自分类Dev

抓住返回值并摆脱JavaScript中的forEach?