|
Почему работает выражение | ☑ | ||
---|---|---|---|---|
0
iceman2112
07.02.17
✎
18:45
|
Часто видел такую конструкцию, но все руки не доходили разобраться.
МассивСтрок = Неопределено; Если МассивСтрок <> Неопределено И МассивСтрок.Найти(Выборка.НомерСтроки) = Неопределено Тогда Продолжить; КонецЕсли; Почему она работает? Он вычисляет первое выражение, оно ложь и т.к. И он дальше не вычисляет? |
|||
1
Господин ПЖ
07.02.17
✎
18:46
|
условия короткозамкнутые
|
|||
2
Господин ПЖ
07.02.17
✎
18:47
|
вы бы мануал полистали, прежде чем хавнокодить...
|
|||
3
iceman2112
07.02.17
✎
18:50
|
(2) Спасибо 1с за широкодоступные мануалы
|
|||
4
Господин ПЖ
07.02.17
✎
18:58
|
это в каждой книжке есть. типа радченко
|
|||
5
iceman2112
07.02.17
✎
19:00
|
(4) Даже в гугле этого нет. Простые вещи, а про такую конструкцию
|
|||
6
iceman2112
07.02.17
✎
19:00
|
Может я правда какую нибудь пару прогулял еще в универе
|
|||
7
iceman2112
07.02.17
✎
19:01
|
Если МассивСтрок <> Неопределено И (МассивСтрок.Найти(Выборка.НомерСтроки) = Неопределено) Тогда
Даже если вот так пишу, все равно работает (1) По этому запросу, выдает двигатели какие то |
|||
8
Господин ПЖ
07.02.17
✎
19:06
|
>Даже в гугле этого нет
товарищ, у вас в руках мухи ипутся... читайте радченко |
|||
9
Жан Пердежон
07.02.17
✎
19:09
|
(7) сокращенная логика, есть чуть ли в не любом яп; да и в школе информатику прогуливать не следовало бы.
А и Б - если А - ложь, нет смысла вычислять Б; А или Б - если А - истина, нет смысла вычислять Б; |
|||
10
iceman2112
08.02.17
✎
08:43
|
(8) не трать свое время, иди чаю попей лучше
(9) То что не смыслы вычислять Б я понял. Вопрос был работает 1с? |
|||
11
iceman2112
08.02.17
✎
08:44
|
Короче ясно, на интуитивном уровне
|
|||
12
iceman2112
08.02.17
✎
08:55
|
Я думал, что ЯП вычисляют выражения отдельно, а потом считают, что получилось. Позже я стал встречать конструкции, подобные выше и в других ЯП, но нигде не видел про это описание. Т.е. интуитивно понятно, что он не вычисляет соседнюю конструкцию, мне нужно было подтверждение для сдвига парадигмы
|
|||
13
apokrit
08.02.17
✎
08:57
|
(0)
из описания встроенного языка (см. https://its.1c.ru/db/v839doc/bookmark/dev/TI000000145) ... Логические выражения вычисляются слева направо. ... При вычислении логического выражения вычисляются только необходимые части выражения. Например, в выражении (Цена > 0) И ПроверкаСуммы(), если Цена <= 0, функция ПроверкаСуммы() не вызывается. ... |
|||
14
iceman2112
08.02.17
✎
08:58
|
(12) Спасибо 1с за широкодоступные мануалы
|
|||
15
iceman2112
08.02.17
✎
09:01
|
(13) Спасибо
|
|||
16
ptiz
08.02.17
✎
09:02
|
(12) " вычисляют выражения отдельно, а потом считают, что получилось" - так было в 7.7
|
|||
17
iceman2112
08.02.17
✎
09:05
|
(12) Ну вот, и еще в некоторых ЯП наверное, типо Pascal или C++. Оттуда у меня это и отложилось наверное
|
|||
18
Рэйв
08.02.17
✎
09:18
|
(17)Это потому что там вычисления ведутся справа налево
|
|||
19
Naf2017
08.02.17
✎
09:19
|
(17) в турбо паскале поведение изменяется директивами компиляции по коду
в С++ есть разные операторы: && || против & | |
|||
20
Naf2017
08.02.17
✎
09:19
|
(18) это ты сейчас обоснуешь?
|
|||
21
iceman2112
08.02.17
✎
09:20
|
(18) Ну вот и разобрались с вопросом. Всем спасибо
|
|||
22
apokrit
08.02.17
✎
09:20
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |