eval()

阅读(5356) 标签: 动态解析, 计算, 表达式,

描述:

动态解析并计算表达式。

语法:

eval(StringExp ,{argExp,…})

备注:

动态解析StringExp串后返回计算结果。

StringExp中使用?表示参数argExp表示参数值?argExp个数相同时按位置一一对应,?个数大于argExp个数时,则从第一个argExp开始循环对应还可以使用?i方式通过序号i?匹配参数值,例如eval( "?2/?1", 3, 6 ) 中,第一个?对应第2个参数值,第二个?对应第1个参数值,即解析表达式6/3,返回结果为2

?0表示所有参数构成的序列。

参数:

StringExp

待计算的表达式串。

argExp

参数表达式。

选项:

@s

不计算,仅返回解析后的表达式。

函数关键字:

?

StringExp中代表argExp的值。

返回值:

表达式的结果值,数据类型由表达式决定

示例:

 

A

 

1

="1+3"

 

2

=eval(A1)

4

3

=4

 

4

=eval("?+5",A3)

? 为关键字,代表A3参数值,返回值9

5

=eval("(?+1)/?",3,4)

第一个?值为3,第二个?值为4,返回值1.0

6

=eval( "(?+?)*?",1, 3 )

第一个?值为1,第二个?值为3,第三个?值为1,返回值4

7

=eval( "?+?", 3 )

结果是6,因为argExp数量小于?,所以它会重复使用argExp

8

=eval( "?2/?1", 3, 6 )

第一个?对应第二个参数,第二个?对应第一个参数,因此结果为2.0

9

=eval( "?0.len()", 3,6)

返回参数构成的序列长度,?0为所有参数构成的序列。

10

=eval@s( "(?+?)*?",1, 3 )

使用@s选项,不计算,仅返回解析后的表达式,返回结果:(1+3)*1