Comments 25
Ну, в Питоне конструкция with так используется, и по-моему в C# есть очень похожая штука.
Ничего нового или интересного, на мой взгляд.
Ничего нового или интересного, на мой взгляд.
+14
Интересная идиома, но корень — не обратная операция к возведению в квадрат, формально, sqrt(x^2) = abs(x). Однако, при расчете длины вектора — она является обратной, так как всегда x>=0. Можно ли в общем случае говорить о том, что некоторая операция является обратной всегда при определенных допущениях. Формально, операция закрытия файла будет обратной к открытию, только в том случае, если закрывается именно тот файл, который был открыт. Занудный комментарий получился.
+2
формально, «поставить кружку» является обратной для «взять кружку» только если вы не отхлебнули кофе, а зачем тогда вы брали кружку?
0
Тоже позанудствую:
Однако, при расчете длины вектора — она является обратнойНе является, так как под корнем еще есть сложение. Собственно, в статье есть пара слов и об этом.
+1
Там суммируются квадраты чисел, и сумма квадратов больше или равна нуля, так почему же в этом случае не является обратной? — есть ли место неоднозначности?
0
UFO just landed and posted this here
Для бедных: try/finally и аналоги.
-2
Why not?
0
Они какбе совершенно для другого предназначены и я не могу пока представить себе — как реализовать даже идиому «открытие-чтение-закрытие» без явного описания закрытия (ниже был отличный пример на питоне).
0
О да, ни разу в жизни не слышали )
+3
Думаю: «что за чушь?». А это Ализар.
По теме: есть using, with и куча библиотечных функций в разных языках, которые реализуют именно ту идиому, о которой «мы никогда не слышали».
По теме: есть using, with и куча библиотечных функций в разных языках, которые реализуют именно ту идиому, о которой «мы никогда не слышали».
+5
Паттерн локер? Не, не слышал.
+2
Пример на Питоне даже изящней вашего примера на Руби
print "file not opened"
with open('/path/to/file', 'w') as f:
f.write()
print "file closed"
+1
Насколько я понял из доки, он просто «вызывает» __enter__ и __exit__ у объекта?
0
Вроде того.
Это можно использовать в любом месте, где есть пара операций, вроде описанных в статье: захват лока, открытие файла, соединения, бла-бла-бла.
Объект любого класса, в котором определены эти методы, соответствует протоколу менеджера контекста и, вследствие этого, может использоваться с «сахарной» конструкцией вида «with...as»
Это можно использовать в любом месте, где есть пара операций, вроде описанных в статье: захват лока, открытие файла, соединения, бла-бла-бла.
Объект любого класса, в котором определены эти методы, соответствует протоколу менеджера контекста и, вследствие этого, может использоваться с «сахарной» конструкцией вида «with...as»
+1
UFO just landed and posted this here
Смешанное ощущение от статьи. Вроде как очевидно все, и даже верно. Но ничего нового. В большинстве языков есть средства для реализации обязательного возврата занятого ресурса (выше уже упоминались). Делать еще более навороченные бессмысленно — тогда уж лучше на уровне операционнной системы вынуждать процессы освобождать ресурсы.
Не любую функцию можно обратить, усложнять семантику языка ряди нескольких случаев, на мой взгляд, нерационально. А уж как ухудшится читабельность подобного кода, если вместо sqrt будут писать &.:*.
Не любую функцию можно обратить, усложнять семантику языка ряди нескольких случаев, на мой взгляд, нерационально. А уж как ухудшится читабельность подобного кода, если вместо sqrt будут писать &.:*.
+1
Sign up to leave a comment.
Программная идиома, о которой вы никогда не слышали