簡體   English   中英

將C#與IronPython連接 - 獲取返回值

[英]Interfacing C# with IronPython - obtaining return values

我正在嘗試在我們的應用程序的一部分中實現對IronPython的支持,該應用程序使用腳本並且當前支持許多現有語言,例如Lua。

場景是我們既需要支持腳本的返回值(使用語言的返回或等效語法),也需要在退出時讀取,並在執行變量之前寫入以在整個腳本中使用。

我在IronPython中遇到的問題是它似乎不允許在函數外部的腳本中使用return。 因此,我可以將所有腳本包裝在一個函數中,雖然這很麻煩,因為我必須縮進所有代碼,而這本身並不是一個大問題,看起來腳本中引用的任何變量都被視為函數作用域局部變量,並且GetVariable / SetVariable方法不允許我將這些指定為全局,因此現在的方法包裝腳本失敗,因為它找不到GetVariable和SetVariable設置的變量。

所以例如采取腳本:

integerVar = integerVar + 10
stringVar = stringVar + " modified"
return true

不會直接工作,因為return語句由於不在方法中而失敗。 包裝功能:

def run():
    integerVar = integerVar + 10
    stringVar = stringVar + " modified"
    return true

使用“賦值前引用的局部變量'integerVar'調用方法時失敗”,盡管先前在范圍上設置了SetVariable。

有沒有什么方法可以執行IronPython腳本,允許我既獲取return語句返回的任何值,又能夠在執行前設置值由腳本操作,並在執行后獲取它們的值?

您需要在函數中使用“global”關鍵字。 示例如下:

def run():
    global intergerVar
    integerVar = integerVar + 10
    stringVar = stringVar + " modified"
    return true

有關更多示例和信息,您可以參考此主題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM