Qual è l'equivalente di questo in IronPython? E 'solo un blocco try-finally?Qual è l'equivalente del blocco C# "using" in IronPython?
using (var something = new ClassThatImplementsIDisposable())
{
// stuff happens here
}
Qual è l'equivalente di questo in IronPython? E 'solo un blocco try-finally?Qual è l'equivalente del blocco C# "using" in IronPython?
using (var something = new ClassThatImplementsIDisposable())
{
// stuff happens here
}
IronPython supporta l'utilizzo IDisposable
con with
dichiarazione, in modo da poter scrivere qualcosa del genere:
with ClassThatImplementsIDisposable() as something:
pass
Buona opzione per i propri tipi, ma non funziona per i tipi di framework. –
Qualche ragione particolare per cui non funziona con i tipi di framework? –
Sei sicuro? Ho appena provato con 'StreamWriter' e sembra funzionare come previsto. –
IronPython (come dei candidati 2.6 di rilascio) supporta l'istruzione with
, che avvolge un oggetto IDisposable in un modo simile ad usare.
il blocco utilizzando è infatti il seguente sotto il cofano:
try {
(do something unmanaged here)
}
finally {
unmanagedObject.Dispose();
}
Spero che questo ti aiuta a capire la logica dietro l'istruzione using.
C'è la dichiarazione with
: http://www.ironpythoninaction.com/magic-methods.html#context-managers-and-the-with-statement
with open(filename) as handle:
data = handle.read()
...
No. L'istruzione "with" funziona solo con oggetti bloccabili, a cui gli oggetti dei file di categoria appartengono semplicemente. Non * funziona * con tipi arbitrari, per esempio interi. – Teddy
With statement. Per esempio:
with open("/temp/abc") as f:
lines = f.readlines()
Questo non supporta IDisposable fuori dalla scatola. Funziona con tipi python con una routine __exit__ specificata. –
Aggiungiamo qualche autorità a questa discussione: http://lists.ironpython.com/ pipermail/users-ironpython.com/2008-July/007826.html –
Non vedo nulla di rilevante in questa domanda. –