# 内置全局函数

函数名                  函数类型签名(返回类型  (参数函数列表))       描述

print:     (...) => nil      标准输出参数,遇到table或者函数,输出 类型名: 0000000000000000

pprint:     (...) => nil     标准输出参数tojsonstring化后的结果

type:    (object) => string   根据运行时参数类型输出参数的类型对应的字符串,返回number, string, table, function, boolean,遇到其他类型的参数,返回前面5种中对应的字符串

比如:



    let a1 = 1
    let a2 = type(a1) -- a2值是'number',运行时的int和number类型,type函数返回结果都是'number'
    let b1: object = 1
    let b2 = type(b1) -- b2值是'number',因为使用的是运行时类型
    type Person = {}
    let c1 = Person()
    let c2 = type(c1) -- c2值是'table',运行时的table和record类型,type函数返回结果都是'table'

require:    (string) => object   引用其他的模块,不当成合约引用,被引用的模块加载后return的结果作为require函数的结果  

emit:    (string, string) => nil  抛出event事件,由区块链记录

exit:    (object) => object  结束本次运行,参数是结束码

pairs:     (table) => object      返回table的迭代器,遍历顺序是先遍历数组部分再遍历哈希表部分,哈希表部分的数字key在string的key前遍历,同样是string类型的key的,短字符串在长字符串前,同样长度字符串的key,按ASCII字符序从小到大

ipairs:     (table) => object  返回table的数组部分的迭代器

error:    (...) => object    报错

getmetatable:    (table) => table   

tostring:    (object) => string     把参数转成字符串,对于table和函数,返回 类型名: 0

tojsonstring:    (object) => string   把参数转成json字符串,对于函数,返回function: 0,对于table中的嵌套table,如果有循环引用,使用'address'替代值.json化时对于哈希表会按key的字符序先按长度从小到大再从左到右依次序比较各字符的字符序。对于空table,返回"[]"

tonumber:    (object) => number  把参数转成number,遇到字符串,从字符串中读取数字,遇到无法解析的字符串或table或函数,返回nil

tointeger:    (object) => int  把参数转成整数,遇到字符串,从字符串中读取整数,遇到无法解析的字符串或table或函数,返回nil

todouble:    (object) => number   把参数转成number类型,遇到无法解析的值返回nil

toboolean:   (obj) => bool       把参数obj转成一个布尔类型的值,obj如果是false或nil返回false,否则返回true

totable:     (object) => table  把参数当成table使用,如果参数不是table返回nil,主要用于编译期静态类型转换

next:       (...) => object  将迭代器递进到下一步

rawequal:     (object, object) => bool  直接比较两个值是否是同一个值(==比较会优先使用__eq__元函数来比较)

rawlen:     (object) => int   直接获取一个table的数组部分长度

rawget:    (object, object) => object  直接获取一个table的某个属性

rawset:    (object, object, object) => nil  直接设置一个table的某个属性

select:    (...) => object               当index为数字将返回所有index大于index的参数:如:select(2,"a","b") 返回 "b". 当index为"#",则返回参数的总个数(不包括index)

setmetatable:    (table, table) => nil    设置table的元表

fast_map_get:   (string, string)=>object  获取fast map的storage的值

fast_map_set:   (string, string, object)=>void  设置fast map的storage的值