You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求编写用于计算时长的Tcl脚本示例实现

Tcl时长计算脚本实现

核心命令实现

先实现需求中的assign、getVar和calc_duration三个命令,用全局数组存储变量,通过正则解析时长单位并转换为秒:

# 全局数组用来存储变量
array set ::vars {}

# 实现assign命令:保存变量名和对应的时长值
proc assign {var value} {
    set ::vars($var) $value
}

# 实现getVar命令:读取已存储的变量值
proc getVar {var} {
    return $::vars($var)
}

# 实现calc_duration命令:解析时长表达式,计算总秒数
proc calc_duration {expr} {
    # 拆分表达式里的+运算符,处理空格
    set terms [split [string map {"+" " + "} $expr] "+"]
    set total_seconds 0

    foreach term $terms {
        set term [string trim $term]
        # 匹配数字+单位的格式(比如5.hours)
        if {[regexp {^(\d+)\.(hours|minutes|seconds)$} $term -> num unit]} {
            switch $unit {
                hours { incr total_seconds [expr {$num * 3600}] }
                minutes { incr total_seconds [expr {$num * 60}] }
                seconds { incr total_seconds $num }
            }
        } else {
            error "无效的时长格式:$term"
        }
    }
    return $total_seconds
}

测试示例代码

运行你提供的示例代码,就能得到预期结果:

assign duration1 5.hours
assign duration2 4.minutes
assign duration3 10.seconds
assign seconds [calc_duration [getVar duration1] + [getVar duration2] + [getVar duration3]]
puts $seconds ;# 输出:18250

说明

  • assign通过全局数组::vars保存变量,支持自定义变量名和时长值;
  • calc_duration支持多个时长项用+拼接的表达式,自动把小时、分钟转换为秒后累加;
  • 正则匹配只处理数字.hours/数字.minutes/数字.seconds格式的时长值,非法格式会直接抛出错误。

内容的提问来源于stack exchange,提问作者pedro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:31:07