点击或拖拽改变大小

Functions.MCompile 方法 (String, Boolean)

X#
宏编译字符串。

命名空间:  XSharp.RT
程序集:  XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法
 FUNCTION MCompile(
	cString AS STRING,
	lAllowSingleQuotes AS LOGIC
) AS _Codeblock
查看代码

参数

cString
类型:String
要编译的字符串。
lAllowSingleQuotes
类型:Boolean
Should single quotes be allowed as string delimiters

返回值

类型:_Codeblock
以宏编译形式的字符串。
备注
MCompile() 允许您使用宏编译器编译字符串并存储编译结果以供后续执行。您可以通过仅编译一次表达式并按需执行编译形式来加速应用程序,而不是每次评估表达式时调用宏编译器。
提示 提示:
在 Visual Objects 中,MCompile() 的返回值是一个包含 PCode 标记的特殊格式字符串。 我们在 X# 中改变了这一点,现在 MCompile() 的返回值是 _Codeblock 类型的代码块。
如果在 Visual Objects 中编译的字符串形式为 "{||.....}",那么你必须 调用 MExec() 将字符串转换为 _Codeblock 对象。要评估代码块,你 然后必须将 MExec() 的结果传递给 EVal() 函数。
如果在 Visual Objects 中编译的字符串不是 "{||.....}" 的形式, 就像本主题的示例中那样,那么对 MCompile() 的返回值调用 MExec() 会立即评估表达式并返回结果。
由于在 X# 中 MCompile() 的返回值是 _Codeblock 类型的代码块, 你也可以使用 Eval() 函数来评估代码块。
在 X# 中,对 MCompile() 返回的代码块调用 MExec() 将直接评估 代码块(当原始字符串不是代码块格式时)或者当原始字符串是代码块格式时 简单地返回相同的代码块。
示例
以下示例展示了 MCompile() 和 MExec() 的典型用法:
X#
 1LOCAL cComp AS CodeBlock        // 注意在 Visual Objects 中这必须是字符串类型
 2cComp := MCompile("2+3")
 3? MExec(cComp)                  // 5
 4nResult := MExec(cComp)         // 赋值
 5? MExec(cComp) = 5              // 比较
 6MEMVAR Two // 声明并初始化一个私有变量
 7Two := 2
 8cComp := MCompile("Two+3")      // 宏引用私有变量
 9? MExec(cComp)                  // 5
10// 以下仅在 X# 中有效,因为 cComp 的结果现在是一个 CodeBlock
11? Eval(cComp)
参见