如上图,设计了一个简单的阅读耗时统计。但是在获取列数据的时候,如果该列没有数据,变量就会失效。也就说无法将变量提升(需要重复定义)。不确定是我代码写的不对还是笔记的 bug
以下是我的代码:
.action{$readState := index .状态} .action{$today := (now | date "2006-01-02")} .action{$nowdate :=(toDate "2006-01-02" $today)} .action{if eq $readState "想读"} 🟡未读 .action{else if eq $readState "在读"} .action{$deadline := index .截止日期} .action{$delta :=(div ($nowdate.Sub $deadline).Hours 24)} .action{if lt $delta 0} .action{$startTime := index .开始日期} .action{$current :=(div ($nowdate.Sub $startTime).Hours 24)} .action{$current} 天 .action{else} 🔴超时.action{$delta} 天 .action{end} .action{else} .action{$startTime := index .开始日期} .action{$endTime := index .结束日期} .action{$delta :=(div ($endTime.Sub $startTime).Hours 24)} .action{$delta} 天 .action{end}
可以看到需要重复定义 $startTime
等变量,如果在最外面定义 $startTime,$endTime
等变量,如果该变量未设定值,则会无法正常显示耗时,如下:
.action{$readState := index .状态} .action{$today := (now | date "2006-01-02")} .action{$nowdate :=(toDate "2006-01-02" $today)} .action{$startTime := index .开始日期} .action{$endTime := index .结束日期} .action{$deadline := index .截止日期} .action{if eq $readState "想读"} 🟡未读 .action{else if eq $readState "在读"} .action{$delta :=(div ($nowdate.Sub $deadline).Hours 24)} .action{if lt $delta 0} .action{$startTime := index .开始日期} .action{$current :=(div ($nowdate.Sub $startTime).Hours 24)} .action{$current} 天 .action{else} 🔴超时.action{$delta} 天 .action{end} .action{else} .action{$delta :=(div ($endTime.Sub $startTime).Hours 24)} .action{$delta} 天 .action{end}
希望有大佬可以解惑,可能是我对语法不够熟悉。