表达式

本文介绍表达式的基本概念,以及表达式使用过程中的运算符和函数,帮助您理解并使用表达式。

简介

表达式是数字、算符、数字分组符号、自由变量和约束变量等的组合。在魔笔中,您可以通过运算符、函数以及变量组成表达式,并在逻辑流、工作流操作中调用表达式,以实现对应的业务功能。

运算符

运算符

使用示例

支持场景

语义

备注

基础运算符:

  • ==

  • !=

  • <

  • >

  • <=

  • >=

-

  • 前端逻辑流

  • 后端逻辑流

-

-

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')

类似三元表达式(a?b:c),第一个参数为Boolean,剩下两个为任意值,含义为:第一个条件为true时,取第二个参数的值作为返回结果;否则选择第三个参数作为返回结果。

返回结果为任意类型。

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")

    • 前端逻辑流

    • 后端逻辑流

    判断字符串是否包含一个子串,第二个参数为子串

    第二个参数为空字符串(""),返回结果为true

    endsWith

    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