如上图,设计了一个简单的阅读耗时统计。但是在获取列数据的时候,如果该列没有数据,变量就会失效。也就说无法将变量提升(需要重复定义)。不确定是我代码写的不对还是笔记的 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}
希望有大佬可以解惑,可能是我对语法不够熟悉。