Aktywne Wpisy
30062018 +230
Spaceruje sobie po centrum miasta, a jakaś babka do mnie podchodzi i pyta czy jeżdżę na rowerze.
Opowiadam, że czasem tak ale dalej nie wiem, co to za sonda.
Ona to, że świetnie, bo właśnie spadł jej łańuch i czy go naprawie.
Ja na to, że nie bardzo, bo sobie całe ręce #!$%@?.
Ona oburzona, że wielki ze mnie facet, który boi się rąk ubrudzić. :)))
Mogłem się spytać czy mi dupe
Opowiadam, że czasem tak ale dalej nie wiem, co to za sonda.
Ona to, że świetnie, bo właśnie spadł jej łańuch i czy go naprawie.
Ja na to, że nie bardzo, bo sobie całe ręce #!$%@?.
Ona oburzona, że wielki ze mnie facet, który boi się rąk ubrudzić. :)))
Mogłem się spytać czy mi dupe
soroz30 +3
#programowanie
.close()
ręcznie. Ew. np. w Pythonie używasz context managerawith open(filename, 'r') as f:
data = f.read()
# Po wyjściu z bloku with następuje zamknięcie pliku
using
using (var something = new ClassThatImplementsIDisposable())
{
// stuff happens here
}
__enter__
oraz__exit__
exit przyjmuje argumenty związane z ew. wystąpieniem wyjątku
goto cleanup
z C. Minimalnie ładniejsza składnia ale semantycznie taka sama kicha jakgoto
finally
nie jest wywoływane przez GC - jest deterministycznie wywoływane przy opuszczeniu bloku, ale nie jest też równoważne RAII - po pierwsze podstawowa wada jest taka że o finally trzeba pamiętać, po drugie musisz wprowadzić dodatkowa zmienna przed try i potem w finally sprawdzać czy nie jest nullem, a po trzecie jest to ściśle związane z zasięgiem leksykalnym. Nie możesz w ten sposób zarządzać zasobami które są np. w polu