描述:
动态解析并计算表达式。
语法:
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 |