this page 展示了如何将字符串转换为整数:
int("2") == 2
int(2.0) == 2
但是在进行转换之前我怎么知道它是否会工作或抛出异常?
例如,我如何实现以下内容:
IF x can be cast to an integer THEN return int(x) < 10
ELSE IF y can be cast to an integer THEN return int(y) < 10
ELSE return false
答案 0 :(得分:2)
您可以使用下面定义的 cast_as_int
函数:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
function cast_as_int(x) {
let pattern = '[+-]?([0-9]*[.])?[0-9]+';
return (
(x is float)
|| (x is int)
|| (x is string) && (x.matches(pattern))
) ? int(float(x)) : null;
}
// All gets will succeed
match /{document=**} {
allow get: if cast_as_int(1) == 1
&& cast_as_int('2') == 2
&& cast_as_int('3.14') == 3
&& cast_as_int(4.44) == 4
&& cast_as_int("5!") != 5;
}
}
}
该函数接受一个变量并返回一个 33448 或 null。
Firestore 不允许语句评估为多种类型,因此该函数只能返回 Integer
或 null
(而不是请求的 false
)。
该函数假设您要从(整数或浮点数)转换为整数。如果您只想从整数转换为整数,则将 int(float(x))
替换为 int(x)
。
let pattern = '[+-]?([0-9]*[.])?[0-9]+'
的正则表达式被采用 Integer