我正在尝试在我们的应用程序的一部分中实现对 IronPython 的支持,该部分使用脚本并且目前支持多种现有语言,例如 Lua。
场景是我们既需要支持脚本的返回值(使用语言的 return 或等效语法),也需要在退出时读取,并在执行前写入要在整个脚本中使用的变量。
我在使用 IronPython 时遇到的问题是它似乎不允许在函数外的脚本中使用 return。因此,我可以将所有脚本包装在一个函数中,尽管这很麻烦,因为我必须缩进所有代码,虽然这本身并不是一个大问题,但似乎脚本中引用的任何变量都被视为函数范围局部变量,并且GetVariable/SetVariable 方法不允许我将它们指定为全局变量,因此 now 方法包装脚本失败,因为它找不到由 GetVariable 和 SetVariable 设置的变量。
以脚本为例:
integerVar = integerVar + 10
stringVar = stringVar + " modified"
return true
不会直接起作用,因为返回语句由于不在方法中而失败。包装在一个函数中:
def run():
integerVar = integerVar + 10
stringVar = stringVar + " modified"
return true
当使用“赋值前引用的局部变量‘integerVar’”调用该方法时失败,尽管之前已在作用域上使用 SetVariable 进行了设置。
有什么方法可以让我执行 IronPython 脚本,既可以获取从 return 语句返回的任何值,又可以在执行之前设置要由脚本操作的值,并获取它们的值执行后的值(value)观?
最佳答案
您需要在函数中使用“global”关键字。示例如下:
def run():
global intergerVar
integerVar = integerVar + 10
stringVar = stringVar + " modified"
return true
更多示例和信息可以引用this thread .
关于c# - 将 C# 与 IronPython 连接 - 获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38077291/