Fastly VCLの文法があまりにもアレなのでメモ
2024-02-28T14:33:33.000Z数値系のみなさま
RTIMEとは何かというと、リンク踏んでもらったほうがわかりやすいがRelative Timeで 1d
(1日) とか表すことができる。
↓ :angry:
declare local var.integer INTEGER;
// ok
set var.integer = 1;
// **NG**
set var.integer = - 1;
declare local var.float FLOAT;
// ok
set var.float = -1;
// **NG**
set var.float = - 1;
declare local var.rtime RTIME;
// ok
set var.rtime = -1m;
set var.rtime = - 1m;
set var.rtime = -1 m;
set var.rtime = - 1 m;
メモ RTIMEの数値には、整数、少数、指数、16進数のいずれも使える
Expressionも奇々怪々だ。
sub return_bool BOOL {
return false || (true && true);
}
sub return_bool2 BOOL {
declare local var.test BOOL;
return var.test && return_bool();
}
sub return_bool3 BOOL {
declare local var.t TIME;
set var.t = std.time("Fri, 21 Aug 1981 14:51:07 GMT", now);
declare local var.t2 TIME;
declare local var.test BOOL;
declare local var.test2 BOOL;
declare local var.test3 BOOL;
return var.test || time.is_after(var.t,var.t2) || ((var.test2) || var.test3);
}
sub hoge {
declare local var.bool BOOL;
set var.bool = (return_bool() || true);
}
↑これは全部OK
↓これは全部NG
sub return_bool BOOL {
return (false || (true && true));
}
sub return_bool2 BOOL {
declare local var.test BOOL;
return (var.test) && return_bool();
}
sub hoge {
declare local var.bool BOOL;
set var.bool = return_bool() || true;
}