本文为您介绍条件判断相关函数的语法、说明、参数、返回值和示例。

and | or | not | eq | ne | null

and

项目 描述
语法 and(arg, ...)
说明
  • 逻辑与运算符。
  • 支持短路语义,即某个参数为假时,后续参数不再进行求值。
参数 一个或多个参数,参数类型不限。
返回值 全部参数为真时返回true,任一参数为假时返回false
示例
if and($arg_mode, eq($arg_mode, 'set_header')) {
    add_rsp_header('USER-DEFINED-1','path1')
}
  • 当请求携带mode参数且mode参数等于set_header时,设置响应头USER-DEFINED-1
  • 当请求不携带mode参数,短路语义生效,不再执行后续的eq比较;由于and()为假,不会设置响应头USER-DEFINED-1

or

项目 描述
语法 or(arg, ...)
说明
  • 逻辑或运算符。
  • 支持短路语义,即某个参数为真时,后续参数不再进行求值。
参数 一个或多个参数,参数类型不限。
返回值 任一参数为真时返回true,全部参数为假时返回false
示例
if and($http_from, or(eq($http_from, 'wap'), eq($http_from, 'comos'))) {
    rewrite(concat('http://tech.com.cn/zt_d/we2015/', $http_from), 'enhance_redirect')
}
  • 当请求头from存在,且其值为[wap|comos]时,302重写向至http://tech.com.cn/zt_d/we2015/[wap|comos]
  • 当请求头from存在,且其值为wap时,短路语义生效,不再执行后续eq comos比较,同时or()返回true

not

项目 描述
语法 not(arg)
说明 逻辑运算符取反。参数undeffalse为假,其余为真。
参数 仅接受1个参数,参数类型不限。
返回值
  • true
  • false
示例
if not($arg_key) {
    exit(403)
}
if not($cookie_user) {
    exit(403, 'not cookie user')
}
if not(0) {
    exit(403)
}
if not(false) {
    exit(403)
}
  • 如果请求未携带参数key时,403拒绝请求。
  • 当请求未携带cookie user时,403拒绝请求,响应body为'not cookie user'
  • not(0)的结果为false
  • not(false)的结果为true

eq

项目 描述
语法 eq(arg1, arg2)
说明 比较2个参数是否相等。
参数
  • arg1:任意类型。
  • arg2:应与arg1类型相同。
返回值 参数相等返回true,否则返回false
示例
key1 = 'value1'
key2 = 'value2'
if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) {
    say('match condition')
}
  • 请求参数k1k2都存在时,执行后续的比较操作。
  • 请求参数k1k2不存在时,短路语义生效,不再执行后续的比较操作。
  • eq: 请求参数k1的值是否等于value1
  • ne: 请求参数k2的值不等于value2
  • 当请求参数k1k2均存在,且k1等于value1k2不等于value2时,输出响应体match condition

ne

项目 描述
语法 ne(arg1, arg2)
说明 比较2个参数是否不等。
参数
  • arg1:任意类型。
  • arg2:应与arg1类型相同。
返回值 参数不等返回true,否则返回false
示例
key1 = 'value1'
key2 = 'value2'
if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) {
    say('match condition')
}
  • 请求参数k1k2都存在时,执行后续的比较操作。
  • 请求参数k1k2不存在时,短路语义生效,不再执行后续的比较操作。
  • eq: 请求参数k1的值是否等于value1
  • ne: 请求参数k2的值不等于value2
  • 当请求参数k1k2均存在,且k1等于value1k2不等于value2时,输出响应体match condition

null

项目 描述
语法 null(v)
说明 判断AScript数据类型是否为空。
参数 v:需要传入的参数,类型为数组、字典和字符串,其他类型均返回false。
返回值 返回值为bool类型。
  • v是数组和字典,如果为空,返回true。
  • v是字符串,如果值为空串,返回true。
  • 其他情况均返回false。
示例
d = []
say(null(d))
set(d, 1, 'v1')
say(null(d))
say(tostring(null('x')))
say(tostring(null('')))
输出:
true
false
false
true