2010-05-18 6 views

Respuesta

4

en Python (y por consiguiente en IronPython) no se puede cambiar un parámetro que no es mutable (como cuerdas)

lo que no puede Traslate directamente el código dado a pitón, pero hay que hacer algo como:

def GetTP(name): 
    return tuple([2, 1]) 

y cuando lo llamas que deben hacer:

retTuple = GetTP(name) 
ter = retTuple[0] 
prov = retTuple[1] 

que es el mismo comportamiento cuando en IronPython se llama un método C# que contiene los parámetros de salida/ref.

De hecho, en ese caso IronPython devuelve una tupla de los parámetros out/ref, y si hay un valor de retorno es el primero en la tupla.

EDIT: en realidad, es posible reemplazar un método con parámetros fuera/ref, mira aquí:

http://ironpython.net/documentation/dotnet/dotnet.html#methods-with-ref-or-out-parameters

+0

quería explicar problema tan simple como sea posible, es por eso que utilicé ese método de ejemplo. El verdadero problema es que este método anula el método en la clase base y debo proporcionar la misma firma en IronPhyton para anular el método base. Intenté tu camino pero no ayudo ... – aron

+1

Revisa mi edición;) – digEmAll

+1

¿No quieres una tupla? – Dykam

1

script Python algo como esto debería funcionar:

ter = clr.Reference[System.String]() 
prov = clr.Reference[System.Int32]() 

GetTP('theName', ter, prov) 

print(ter.Value) 
print(prov.Value) 
Cuestiones relacionadas