Functions.MExec 方法 |
命名空间: XSharp.RT
提示: |
---|
在 Visual Objects 中,MCompile() 的返回值是一个包含 PCode 标记的特殊格式字符串。
我们在 X# 中改变了这一点,现在 MCompile() 的返回值是 _Codeblock 类型的代码块。 如果在 Visual Objects 中编译的字符串形式为 "{||.....}",那么你必须 调用 MExec() 将字符串转换为 _Codeblock 对象。要评估代码块,你 然后必须将 MExec() 的结果传递给 EVal() 函数。 如果在 Visual Objects 中编译的字符串不是 "{||.....}" 的形式, 就像本主题的示例中那样,那么对 MCompile() 的返回值调用 MExec() 会立即评估表达式并返回结果。 由于在 X# 中 MCompile() 的返回值是 _Codeblock 类型的代码块, 你也可以使用 Eval() 函数来评估代码块。 在 X# 中,对 MCompile() 返回的代码块调用 MExec() 将直接评估 代码块(当原始字符串不是代码块格式时)或者当原始字符串是代码块格式时 简单地返回相同的代码块。 |
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)