Почему замыкание накоротко не является поведением по умолчанию в VB?

Вы постоянно модифицируете прямоугольник одного и того же объекта. Это не может работать.

Вместо этого создайте список координат и перенесите одно и то же изображение в разные пункты назначения на основе этого списка.

15
задан Andrei 5 May 2012 в 08:26
поделиться

3 ответа

Поскольку команда VB должна была поддержать прежнюю совместимость с более старым кодом (и программисты!)

, Если бы замыкание накоротко было поведением по умолчанию, поразрядный , операции неправильно интерпретировать компилятором.

, Почему мы представляли AndAlso и OrElse? Паноптикумом, Центральным

, Наша первая мысль была то, что логические операции намного более распространены , чем битовые операции, таким образом, мы должны сделать И и Или быть логическими операторами и добавить новые побитовые операторы под названием BitAnd, BitOr, BitXor и BitNot (последние два, являющиеся для полноты). Однако во время одной из бет стало очевидно, что это было довольно плохой идеей. Пользователь VB, который забывает, что новые операторы существуют и использование И когда он имеет в виду BitAnd и Или когда он имеет в виду BitOr, получил бы код, который компилирует, но приводит к "плохим" результатам.

18
ответ дан 1 December 2019 в 03:52
поделиться

Явное короткое замыкание удостоверяется, что левый операнд оценен сначала.

На некоторых языках кроме VB, логические операторы могут выполнить неявное короткое замыкание, но могут оценить правильный оператор сначала (зависящий, например, от сложности выражений в левом и в праве на логический оператор).

0
ответ дан 1 December 2019 в 03:52
поделиться

Я не нахожу, что замыкание накоротко полезно в каждом случае. Я использую его только при необходимости. Например, при проверке двух различных и не связанных переменных, это не требовалось бы:

  If x > y And y > z Then

  End If

, Поскольку статья Paul Vick иллюстрирует (см. ссылку, предоставленную Ken Browning выше), идеальный сценарий, в котором замыкание накоротко полезно, - когда объект имеет быть проверенным на существование сначала, и затем одно из его свойств должно быть оценено.

  If x IsNot Nothing AndAlso x.Someproperty > 0 Then

  End If

Так, по-моему, обе синтаксических опции очень требуются.

1
ответ дан 1 December 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: