本文介绍表达式的基本概念,以及表达式使用过程中的运算符和函数,帮助您理解并使用表达式。
简介
表达式是数字、算符、数字分组符号、自由变量和约束变量等的组合。在魔笔中,您可以通过运算符、函数以及变量组成表达式,并在逻辑流、工作流操作中调用表达式,以实现对应的业务功能。
运算符
运算符 | 使用示例 | 支持场景 | 语义 | 备注 |
基础运算符:
| - |
| - | - |
and | 2==3 and 4==5 | 逻辑与 | - | |
or | 2==3 or 4==5 | 逻辑或 | - | |
not | not 2==3 | 逻辑非 | - | |
null | $variable == null | 空 | 不支持undefined。 | |
下标操作符([]) | $列表[1] | 取列表的第i项(从0开始)。 | - | |
if | if(2==3,'a','b') | 类似三元表达式 | 返回结果为任意类型。 | |
mod | mod(8,3) | 取模,以第二个参数为底对第一个参数取模。 | 仅支持整数运算。 |
函数
用户登录
函数
使用示例
支持场景
语义
备注
getSessionAttr
getSessionAttr('name')
后端逻辑流
获取session中的属性值。
需先设置session中的属性值,后端逻辑流操作中可设置。
getCurrentUser
getCurrentUser()
前端逻辑流
后端逻辑流
获取当前登录用户。
需先登录。
verifyPassword
verifyPassword('eriajslkfejlre','123456')
后端逻辑流
校验密码是否正确(第一个参数为加密后的值,第二个参数为加密前的值)。
第一个参数为数据库中查询出来的结果,第二个参数为页面填写结果。
配置
函数
使用示例
支持场景
语义
备注
getConfig()
getConfig('module_12erd32::name')
前端逻辑流:前端逻辑流仅仅支持非加密配置。
后端逻辑流。
获取应用或模块的配置,格式为
getConfig('{模块id}::{配置名称}')
。-
列表
函数
使用示例
支持场景
语义
备注
size
size($列表变量)
前端逻辑流
后端逻辑流
获取列表的长度。
-
数字运算
函数
使用示例
支持场景
语义
备注
abs
abs(-1)
前端逻辑流
后端逻辑流
获取绝对值
-
ceil
ceil(3.4)
获取大于等于当前数值的最小整数
-
floor
floor(3.9)
获取小于等于当前数值的最大整数
-
max
max(1,2)
获取最大值
类型应一致
min
min(1,2)
获取最小值
类型应一致
pow
pow(2.3, 1)
幂运算
第二个参数仅支持整数
random
random()
产生一个
(0-1)
之间的随机浮点数-
round
round(3.4)
四舍五入,第二个参数表示保留小数位数,可缺省。
-
字符串
函数
使用示例
支持场景
语义
备注
contains
contains("hello", "llo")
前端逻辑流
后端逻辑流
判断字符串是否包含一个子串,第二个参数为子串
第二个参数为空字符串
("")
,返回结果为trueendsWith
endsWith("world","ld")
判断字符串是否以某个子串结
返回结果为Boolean
startsWith
startsWith("world","ld")
判断字符串是否以某个子串结尾
返回结果为Boolean
find
find("abcd","cd")
查找字符串中第一个子串的起始位置
返回结果为int
findLast
findLast("abcd","cd")
查找字符串中最后一个子串的起始位置
返回结果为int
length
length("asdf")
字符串长度
-
substring
substring("abc",1)
substring("abc",1,1)
截取字符串
两个参数时,第二个参数表示截取的开始位置;三个参数时,第三个参数表示截取的长度。
toLowerCase
toLowerCase("ABC")
字符串转小写
-
toUpperCase
toUpperCase("ABC")
字符串转大写
-
trim
trim(" asdf ")
去除字符串首尾空白
-
类型转换
函数
使用示例
支持场景
语义
toDecimal
toDecimal("3")
前端逻辑流
后端逻辑流
将目标值转为
Decimal(Double)
类型toInteger
toInteger("3")
将目标值转为Integer类型
toString
toString(3)
将目标值转为
String(CHAR/TEXT)
类型正则表达式
函数
使用示例
支持场景
语义
isMatch
isMatch("a", "/^\w$/")
前端逻辑流
后端逻辑流
判断字符串是否匹配正则
URL
函数
使用示例
支持场景
语义
备注
urlEncode
urlEncode("http://aa.com")
前端逻辑流
后端逻辑流
URL进行URL编码
-
urlDecode
urlDecode("http://aa.com")
URL进行URL解码
-
getCurrentUrl
getCurrentUrl()
getCurrentUrl(false)
前端逻辑流
获取当前窗口URL
参数可选,false表示不带query条件,true或不填表示携带query条件
getUrlQuery
getUrlQuery('name', 'http://a.com?name=a')
获取query参数
返回结果为string
getUrlOrigin
getUrlOrigin()
获取当前窗口的urlOrigin
返回结果为string
getUrlHostname
getUrlHostname()
获取当前窗口URL hostname
返回结果为string
getUrlPathname
getUrlPathname()
获取当前窗口URL的pathname
返回结果为string
getUrlProtocol
getUrlProtocol()
获取当前窗口URL网络协议
返回结果为string
getUrlPort
getUrlPort()
获取当前窗口URL端口
返回结果为string
getCurrentPageId
getCurrentPageId()
获取当前页面id(魔笔的页面id)
返回结果为string
加密相关
函数
使用示例
支持场景
语义
备注
encryptContent
encryptContent('RSA','publicKey','content')
后端逻辑流
对content进行加密
目前仅支持RSA加密
decryptContent
decryptContent('RSA','privateKey','content')
对content进行解密
目前仅支持RSA解密,加解密的公钥或私钥需匹配。
时间相关
函数
使用示例
支持场景
语义
备注
dateTime
dateTime(2008,12,30,12,11,10)
前端逻辑流
后端逻辑流
创建一个DateTime对象(使用应用时区)
-
now
now()
获取当前时间
parseDateTime
parseDateTime("2017-11-12 12:12:00","yyyy-MM-dd HH:mm:ss")
根据字符串解析为日期对象
formatDateTime
formatDateTime(now(), "dd-MM-yyyy")
时间字符串格式化
dateTimeToEpoch
ateTimeToEpoch(parseDateTime("1974-7-2 9:50:10"))
时间转时间戳
epochToDateTime
epochToDateTime(141990610000)
时间戳转时间
addMilliseconds
addSeconds
addMinutes
addHours
addDays
addWeeks
addMonths
addYears
addMilliseconds(dateTime(2017,1,1,1,1,1),1400)
时间加法
trimToSeconds
trimToMinutes
trimToHours
trimToDays
trimToMonths
trimToYears
trimToMonths(dateTime(2009,1,1)) => 2009-1-0 0:0:0
按照精度舍弃时间
millisecondsBetween
secondsBetween
minutesBetween
hoursBetween
daysBetween
weeksBetween
daysBetween(dateTime(2008,10,10),dateTime(2008,10,20))
后端逻辑流
时间差值计算
timeZone
timeZone()
前端逻辑流
后端逻辑流
获取当前应用时区
calendarMonthsBetween
calendarYearsBetween
calendarMonthsBetween(dateTime(2009,1,1),dateTime(2010,1,1))
日历差值计算
getWeekDay
getWeekDay($Parameter.date)
后端逻辑流
返回时间星期信息
返回值取值范围:
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY
存储
函数
使用示例
支持场景
语义
getLocalStorage
getLocalStorage('key')
前端逻辑流(Web应用)
获取浏览器Local Storage。
getSessionStorage
getSessionStorage('key')
前端逻辑流(Web应用)
获取浏览器Session Storage。
getCookie
getCookie('key')
前端逻辑流(Web应用)
获取浏览器cookie。
媒体
函数
使用示例
支持场景
语义
备注
createFile
createFile('IMAGE',$fakeUrl )
前端逻辑流
后端逻辑流
创建一个File、Image、Video、Audio、Document属性。
第一个参数支持:FILE、IMAGE、VIDEO、AUDIO、DOCUMENT。
isEmptyFile
isEmptyFile($fake)
判断文件属性的 URL是否为空。
-
getFileURL
getFileURL($fake)
获取文件属性的 URL链接。
-
Web 应用
函数
使用示例
支持场景
语义
备注
getCurrentWebPageType
getCurrentWebPageType()
前端逻辑流
获取 Web 应用当前页面类型。
返回 PC_WEB 或 H5_WEB
getUserAgent
getUserAgent()
获取 UserAgent。
getDeviceType
getDeviceType()
获取设备类型。
返回 desktop、mobile、console、tablet、smarttv、wearable 或 embedded