Глобальные переменные в Ironpython - PullRequest
0 голосов
/ 15 февраля 2011

У меня ужасные проблемы при попытке понять правила определения области действия Ironpython.

С помощью следующего скрипта:


global data
// function for call xml-rpc 
def CallListDatabases(self):
    global synC, synCtx, result, data   
        self.synCtx = synC.Current
        service = XmlRpcService("http://localhost:8000/rpc")
        req = XmlRpcRequest(service, 'vocab_list')
        req.XmlRpcCallCompleteHandler += self.req_XmlRpcCallCompleteHandler
        result = req.Execute(self)

//if call xml-rpc complete then use working rpc 
def req_XmlRpcCallCompleteHandler (self, response, userState):
    global synCtx, synC, data
        word = []
        f = response.TryCast(clr.GetClrType(Fault))
        if f != None:
            self.synCtx.Post(self.SetCallResult, f)
            if f.FaultCode == -1:
                pass
        else:
            self.synCtx.Post(self.SetCallResult, response)

// show result with rpc complete
def SetCallResult(self, userState):
        global data, result                
        if userState.GetType() == clr.GetClrType(Fault):
            f = userState
            if f != None:
                print str(f.FaultString)
                return    
        response = userState
        result = response.TryCast(clr.GetClrType(Array[str]))
        data = result   //I want to use value it

print "value: "+data  //show value     

Проблема
print "value:"+ data


значение: [] <<< ======== Не значение </p>

1 Ответ

1 голос
/ 15 февраля 2011

Прежде всего, вы, кажется, никогда не вызываете ни одну из определенных вами функций. Если вы вызываете функции, значит, возвращаемое значение response.TryCast(clr.GetClrType(Array[str])) - пустой список. Вы пытались print ввести значение результата в SetCallResult()? Могу поспорить, что это [].

...