Оператор 'If' и двоеточие

@clarky: ошибка, которую вы получили, была правильной, пыталась сказать вам, что вы используете drive.mount () неправильно: аргумент точки монтирования для drive.mount () должен быть пустым существующим каталогом или именем несуществующий файл / каталог в каталоге, который существует, так что точка монтирования может быть создана как часть операции монтирования. Использование вами относительного пути в drive.mount('content/drive/') (то есть content/drive/) подразумевает, что монтирование должно происходить в '/content/content/drive', потому что путь интерпретатора по умолчанию - /content; обратите внимание на двойной компонент пути content, и, вероятно, у вас еще нет каталога с именем / content / content, внутри которого можно создать точку монтирования с именем drive. Исправление к коду вашего ноутбука заключается в том, чтобы вместо этого использовать drive.mount('/content/drive') - обратите внимание на ведущий /, делающий путь монтирования абсолютным, а не относительным.

12
задан John Saunders 1 November 2013 в 15:02
поделиться

4 ответа

Я предполагаю, что Вы имеете в виду VB.Net.

Согласно грамматике в спецификации Языка VB, которую можно считать здесь:

http://www.microsoft.com/Downloads/thankyou.aspx?familyId=39de1dd0-f775-40bf-a191-09f5a95ef500&displayLang=en

Результат должен быть "6".

Это вызвано тем, что грамматика для "строки, если оператор":

If  BooleanExpression  Then  Statements  [  Else  Statements  ]  StatementTerminator

и "операторы" определяются, чтобы быть

Statements  ::=
[  Statement  ]  |
Statements  :  [  Statement  ]

Править: Я хотел бы отметить, что отладка кода не "обманывает".

Я раньше работал над командой компилятора VB в Microsoft.

Были времена, где спецификация была неоднозначна, или не соответствовала тому, что мы на самом деле поставили. В нескольких из тех случаев решение (что мы сделали для фиксации его) всегда было на основе "хорошо..., что делает компилятор, делают теперь".

Иногда мы изменяли бы компилятор, иногда мы будем изменять спецификацию.

Однако мы всегда запускали бы компилятор для наблюдения то, что он на самом деле сделал, прежде чем мы приняли решение.

Таким образом... отладка кода является большой частью выяснения, что это делает...

16
ответ дан 2 December 2019 в 07:22
поделиться

Конечный результат равняется 6.
Теперь реальный вопрос: Как Вы входили в мой repo?
:-)

2
ответ дан 2 December 2019 в 07:22
поделиться

Я не использовал ОСНОВНОЙ, что экстенсивно в некоторое время, таким образом, это - просто предположение, но я думаю это fred 6.

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

Dim fred As Integer

If True Then
    fred = 5
    fred = 3
    fred = 6
Else
    fred = 4
    fred = 2
    fred = 1
End If

Я полагаю, что это - эквивалентный код, если я не ошибаюсь.

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

if (condition)
    do_something();
    do_other_thing();

В коде, кажется, говорится, подразумевают это do_something и do_other_thing выполняется когда condition верно, но в действительности, do_other_thing всегда выполняется.

Лучше пытаться придерживаться стилей кодирования, которые делают намерение кода более очевидным и меньше ambigious.

3
ответ дан 2 December 2019 в 07:22
поделиться

Просто предположение

fred = 6, потому что у Вас может быть несколько операторов на той же строке, разделенной двоеточием.

Не уверенный, если "еще" является законным (т.е. компилируемым),

По моему скромному мнению, лучший стиль кодирования должен быть выбран:


if (condition) then
  statement
  statement
else
  statement
  statement
end if
0
ответ дан 2 December 2019 в 07:22
поделиться
Другие вопросы по тегам:

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