19 KiB
Builtin - 运行时
运行时
setPrecision(number, precision)
声明:function
从指定精度四舍五入截断小数点位数,返回number的保留小数点Precision位后的值
| 参数 | 类型 | 说明 |
|---|---|---|
number |
real | 实数/实数数组。 |
precision |
integer | 整数,目的是为了截取实数后面小数点的位数。 |
返回:real
示例
范例01:保留三位小数
echo setPrecision(123.4567, 3), "\n";
toStm(v, gtype, stm_type, p_n)
声明:function
转换成为STM流数据。可以通过stmType参数控制是否转换为新流模式或超大流新流模式,新的stm流占用空间更少,访问效率更高
| 参数 | 类型 | 说明 |
|---|---|---|
v |
任意类型数据 | |
gtype |
integer | 可选。图型等特殊类型,默认为0 |
stm_type |
integer | 可选。流模式,0:普通模式;1:新流模式;2:超极大流的紧缩模式;默认为0。其中,超大流模式能处理超大结果集。 |
p_n |
integer | 可选。精度,默认为-1,表示全精度 |
返回:binary
示例
范例01:将数组转换为 STM 后再还原
stream := toStm(array(1, 2, 3));
echo toStn(stm(stream)), "\n";
toStn(v, n)
声明:function
转换成为STN字符串。小数位四舍五入,尾数是五就进一
| 参数 | 类型 | 说明 |
|---|---|---|
v |
any | 任意类型数据 |
n |
integer | 可选。整型,保留小数点后的位数。只对v是小数时且v的小数数位比N大有效。 |
返回:string
示例
范例01:将数值转换为 STN 字符串
echo toStn(1.2345, 2), "\n";
exportCsv(data, csv_str, include_index, include_header)
声明:function
将指定数组Data转换为csv格式字符串并存储在csvStr参数中。仅支持一维及二维数组的转换。和ExportCsvne的区别:在处理浮点数据时,ExportCsv的结果会输出为1E15等格式
| 参数 | 类型 | 说明 |
|---|---|---|
data |
array | 数组类型,要转换成csv格式字符串的数组。 |
csv_str |
string | 字符串类型,转换成功的csv格式字符串(输出值)。 |
include_index |
bool | 可选。布尔类型。转换结果是否包含数组下标信息。默认为False。 |
include_header |
bool | 可选。布尔类型。转换结果是否包含字段头部信息。默认为True。 |
返回:bool
示例
范例01:将二维数组转换为 CSV 字符串
data := array(("name": "Tinysoft", "value": 1));
ok := exportCsv(data, csv_text);
echo ok, ":", csv_text, "\n";
setProfiler(flag)
声明:function
设置需要记录的优化信息(当设置了记录优化信息的时候,运行速度可能会比正常运行慢很多)并返回设置前的状态值,如果设置了记录优化信息,在平台运行的模型结束的时候会在终端打开优化信息的窗口,用户也可以调用GetProfilerInfo来手动获得优化信息
| 参数 | 类型 | 说明 |
|---|---|---|
flag |
可选。整数,若省略则仅返回状态值而不设置。设置需要记录的优化信息,由一个四位二进制数组成,即以下几种常见组合说明: 取值 说明 |
返回:integer
示例
范例01:分析纯数值循环
previous_flag := setProfiler(7);
sum := 0;
for i := 1 to 1000 do
sum += i;
setProfiler(previous_flag);
echo sum, "\n";
randomfrom(avalues)
声明:function
返回一个随机的数组元素,这个数组是由参数Avalue传递进来的
| 参数 | 类型 | 说明 |
|---|---|---|
avalues |
array of any | 数组名称,可以是整数数组或实数数组 |
返回:any
示例
范例01:从数组中随机选择元素
candidates := array(10, 20, 30);
selected := randomFrom(candidates);
echo selected = 10 or selected = 20 or selected = 30, "\n";
// 输出:1
getSysParams()
声明:function
获取所有系统参数的值
返回:array
示例
范例01:读取全部系统参数
echo toStn(getSysParams()), "\n";
call(func_name, p1, pn)
声明:function
根据名称或者函数指针调用指定的函数,后面带的参数将自动送入该函数
| 参数 | 类型 | 说明 |
|---|---|---|
func_name |
string|tfunction | 如果是字符串,表示函数的名称,也可以是函数类型。 |
p1 |
any | 整数,参数1 |
pn |
any | 整数,参数N。 |
返回:any
示例
范例01:按名称调用转换函数
echo call("StrToIntDef", "123", 0), "\n";
callInArray(func_name, param_content)
声明:function
根据名称或者函数指针调用指定的函数,将参数放入一个数组中送入该函数,不支持变参。另外,天软的函数指针可以用thisfunction()获得。该函数与call函数功能类似,注意两个函数设置参数的区别。Call函数直接列举,CallInArray函数将调用的函数的参数放在Array中
| 参数 | 类型 | 说明 |
|---|---|---|
func_name |
string|tfunction | 如果是字符串,表示函数名称,也可以是函数类型。 |
param_content |
array | 数组类型,第一个参数放在ParamContent[0],第二个放在ParamContent[1]以此类推。 |
返回:any
示例
范例01:通过参数数组调用转换函数
echo callInArray("StrToIntDef", array("123", 0)), "\n";
dupValue(value)
声明:function
返回一份value的复制值,一般无需要使用,特别用于不需要变参的函数调用
| 参数 | 类型 | 说明 |
|---|---|---|
value |
any | 任意类型,被复制的数据 |
返回:any
示例
范例01:复制数组值
source_values := array(1, 2);
copied_values := dupValue(source_values);
copied_values[0] := 9;
echo toStn(array(source_values, copied_values)), "\n";
eval(exp)
声明:function
计算表达式并返回表达式的值。表达式可以引用当前作用域中的变量
| 参数 | 类型 | 说明 |
|---|---|---|
exp |
texpression | 要计算的表达式。 |
返回:any
示例
范例01:计算引用当前变量的语句表达式
a := 1;
b := 2;
echo eval(@(a + b)), "\n";
// 输出:3
invoke(obj, member_name, member_value, p1, ..., pn)
声明:function
按名称调用对象成员方法或设置成员属性,支持调用重载方法
| 参数 | 类型 | 说明 |
|---|---|---|
obj |
tslobject | 实例对象。 |
member_name |
string | 成员方法或属性名称。 |
member_value |
boolean | 成员类型:0 表示方法,1 表示属性。 |
p1 |
any | 设置属性时为属性值;调用方法时为第一个参数。 |
pn |
any | 可选。成员方法的后续参数。 |
返回:any
设置属性时返回 0;调用方法时返回方法的执行结果。
示例
范例01:设置对象属性后调用成员方法
obj := new RuntimeInvokeExample();
invoke(obj, "name", 1, "Tinysoft");
echo invoke(obj, "label", 0, "TSL"), "\n";
// 输出:TSL:Tinysoft
type RuntimeInvokeExample = class
public
name;
function label(prefix);
begin
return prefix + ":" + name;
end;
end;
invokeinarray(obj, member_name, member_value, params)
声明:function
按名称调用对象成员方法或设置成员属性,并用数组传递属性值或方法参数。该函数支持命名参数
| 参数 | 类型 | 说明 |
|---|---|---|
obj |
tslobject | 实例对象。 |
member_name |
string | 成员方法或属性名称。 |
member_value |
boolean | 成员类型:0 表示方法,1 表示属性。 |
params |
array | 属性值或方法参数;无参数方法传入空数组,字符串下标可作为命名参数。 |
返回:any
设置属性时返回 0;调用方法时返回方法的执行结果。
示例
范例01:通过数组设置对象属性并调用成员方法
obj := new RuntimeInvokeArrayExample();
invokeinarray(obj, "name", 1, array("Tinysoft"));
echo invokeinarray(obj, "label", 0, array("TSL")), "\n";
// 输出:TSL:Tinysoft
type RuntimeInvokeArrayExample = class
public
name;
function label(prefix);
begin
return prefix + ":" + name;
end;
end;
ifThen(avalue, atrue, a_false)
声明:function
如果Avalue值为真,返回参数Atrue,否则返回参数Afalse
| 参数 | 类型 | 说明 |
|---|---|---|
avalue |
bool | 布尔类型,判定条件 |
atrue |
any | 任意类型,Avalue为真返回值 |
a_false |
any | 任意类型,Avalue为假返回值 |
返回:any
示例
范例01:根据条件选择较大值
a := 1;
b := 2;
echo ifThen(a > b, a, b), "\n";
integer(value)
声明:function
强制成整数,类型转换,对有些必需要指定类型的函数有用,如format
| 参数 | 类型 | 说明 |
|---|---|---|
value |
real | 实数或整数 |
返回:integer
示例
范例01:将实数转换为整数
echo integer(123.456), "\n";
int64(value)
声明:function
强制成整数,类型转换,对有些必需要指定类型的函数有用,如format
| 参数 | 类型 | 说明 |
|---|---|---|
value |
real | 实数或整数 |
返回:int64
示例
范例01:将数值转换为 64 位整数
echo int64(123), "\n";
real(value)
声明:function
强制为实数,类型转换,对有些必需要指定类型的函数有用,如format
| 参数 | 类型 | 说明 |
|---|---|---|
value |
real | 实数或整数 |
返回:real
示例
范例01:将整数转换为实数
echo real(123), "\n";
wideString(value)
声明:function
将字符串转为Unicode字符串,或者强制让二进制为Unicode字符串
| 参数 | 类型 | 说明 |
|---|---|---|
value |
string|binary|widestring | 字符串或者二进制数据 |
返回:widestring
示例
范例01:将字符串转换为宽字符串
echo wideString("Tinysoft"), "\n";
binary(value)
声明:function
强制把字符串或者Unicode字符串转化为二进制流,对有些必需要指定类型的函数有用
| 参数 | 类型 | 说明 |
|---|---|---|
value |
string|binary|widestring | 字符串或者二进制数据 |
返回:binary
示例
范例01:将字符串转换为二进制值
echo toStn(binary("Tinysoft")), "\n";
stn(v)
声明:function
把STN串转换为任意类型
| 参数 | 类型 | 说明 |
|---|---|---|
v |
string | 字符串,STN串 |
返回:any
示例
范例01:还原 STN 字符串
serialized := toStn(array(1, 2, 3));
echo toStn(stn(serialized)), "\n";
randomize()
声明:function
已废弃函数
返回:any
示例
范例01:初始化随机数状态
randomize();
echo random(), "\n";
random()
声明:function
(参考文档未提供简述。)
返回:real
示例
范例01:生成随机数
echo random(), "\n";
random(value)
声明:function
返回从 0 到 value - 1 的随机整数
| 参数 | 类型 | 说明 |
|---|---|---|
value |
integer | 随机范围上限,不包含该值 |
返回:integer
示例
echo random(1), "\n";
// 输出:0
tslfilename()
声明:function
获取正在执行的 .tsl 主脚本完整路径
返回:string
示例
范例01:读取当前主脚本路径
echo tslfilename(), "\n";
sysgettsllibpath()
声明:function
获取当前函数库查找路径
返回:string
示例
范例01:读取当前函数库查找路径
echo sysgettsllibpath(), "\n";
错误与断言函数
getProfilerInfo(clear)
声明:function
获取记录的优化信息
| 参数 | 类型 | 说明 |
|---|---|---|
clear |
bool | Boolean。 |
返回:array
示例
范例01:读取纯数值循环的分析信息
previous_flag := setProfiler(7);
sum := 0;
for i := 1 to 1000 do
sum += i;
profiler_info := getProfilerInfo(1);
setProfiler(previous_flag);
echo length(profiler_info), "\n";
importCsv(csv_str, data, include_index, include_header, single_arr)
声明:function
将指定csv格式字符串csvStr转换为数组,并存储在Data参数中
| 参数 | 类型 | 说明 |
|---|---|---|
csv_str |
string | 字符串类型,csv格式字符串。 |
data |
array | 数组类型,转换成功的数组(输出值)。 |
include_index |
bool | 可选。布尔类型。指定字符串中是否包含数组下标信息。默认为False。 |
include_header |
bool | 可选。布尔类型。指定字符串中是否包含字段头部信息。默认为True。 |
single_arr |
bool | 可选。布尔类型。是否转换为一个一维数组。默认为False。 |
返回:bool
示例
范例01:解析内存中的 CSV 字符串
csv_text := "name,value\nTinysoft,1\n";
ok := importCsv(csv_text, data);
echo ok, ":", toStn(data), "\n";
stm(v)
声明:function
把STM流转换为任意类型
| 参数 | 类型 | 说明 |
|---|---|---|
v |
binary | 二进制类型,STM流 |
返回:any
示例
范例01:还原 STM 二进制流
stream := toStm(array(1, 2, 3));
echo toStn(stm(stream)), "\n";
debugRunEnv(sys_param)
声明:function
将当前变量递交到客户端调试窗口
| 参数 | 类型 | 说明 |
|---|---|---|
sys_param |
boolean | 是否同时输出系统参数 |
返回:integer
示例
范例01:不输出系统参数
result := debugRunEnv(false);
echo result;
// 输出:0
getEstSize(value)
声明:function
获取估算变量占用的内存空间
| 参数 | 类型 | 说明 |
|---|---|---|
value |
any | 要估算的变量 |
返回:integer
示例
范例01:估算数组占用的空间
value := array(1, 2, 3);
echo getEstSize(value) >= 0;
// 输出:1
mToc(tick)
声明:function
返回指定计时点或最近一次 mTic 之后经过的秒数
| 参数 | 类型 | 说明 |
|---|---|---|
tick |
real | 可选。由 mTic 返回的计时点,省略时使用最近一次 mTic |
返回:real
示例
范例01:计算指定计时点之后经过的秒数
tick := mTic;
echo mToc(tick) >= 0;
// 输出:1
范例02:使用最近一次计时点
mTic;
echo mToc() >= 0;
// 输出:1