|
Если <ЛогВыр> Тогда - оптимизация условия | ☑ | ||
---|---|---|---|---|
0
roman383
20.01.15
✎
08:59
|
Если ЛогВыр1 И ЛогВыр2 Тогда
//... КонецЕсли; Если ЛогВыр1 - ЛОЖЬ, будет ли выполняться ЛогВыр2 или программа его игнорирует (ведь вне зависимости от значения ЛогВыр2 условие не будет выполнено)? |
|||
1
polosov
20.01.15
✎
09:00
|
||||
2
polosov
20.01.15
✎
09:01
|
+(1) А, ты про 1с. Ну проверь. примерчик накидай.
|
|||
3
roman383
20.01.15
✎
09:05
|
(1) причем здесь математика. Как действует 1с-ка?
|
|||
4
polosov
20.01.15
✎
09:05
|
Булевы операции
Булевы операции В языке определены следующие виды булевых операций: И (AND) конъюнкция (булево И); ИЛИ (OR) дизъюнкция (булево ИЛИ); НЕ (NOT) логическое отрицание (булево отрицание НЕ). Логические выражения вычисляются слева направо. Для того, чтобы избежать неоднозначности и управлять последовательностью операндов, следует применять круглые скобки. Уровни старшинства логических операций: Уровень 1 операнды заключенные в скобки; Уровень 2 НЕ; Уровень 3 И; Уровень 4 ИЛИ. (с) Справка 1С Отсюда можно сделать вывод, что логические выражения (которые ты заключишь в скобки буду вычислены оба) |
|||
5
Cube
20.01.15
✎
09:07
|
(0) Если первое условие = ЛОЖЬ, то второе условие даже не выполняется. Это удобно.
|
|||
6
фобец
20.01.15
✎
09:07
|
(0) не будет, у 1с "ленивая" логика
|
|||
7
Lexey_
20.01.15
✎
09:08
|
(0)
Если Условие1() И Условие2() Тогда А = 5; КонецЕсли; Функция Условие1() Сообщить("Условие1"); Возврат Ложь; КонецФункции Функция Условие2() Сообщить("Условие2"); Возврат Истина; КонецФункции |
|||
8
Cube
20.01.15
✎
09:09
|
+(5) Пример:
Если Параметры.Свойство("Параметр1") И Параметры.Параметр1 = "Тра-ля-ля" Тогда Раньше такой код привел бы к ошибке, если в параметрах нет поля Параметр1, а сейчас вполне отрабатывает и ошибок нет. То есть, если в параметрах нет поля Параметр1, то сравнение значения Параметр1 не выполняется и ошибки не происходит. |
|||
9
dk
20.01.15
✎
09:10
|
либо проверь на примере
либо делай вложенные условия Если условие1 ТОгда Если условие2 Тогда .... |
|||
10
Fish
20.01.15
✎
09:10
|
(8) "Раньше такой код привел бы к ошибке" - это когда такое было?
|
|||
11
roman383
20.01.15
✎
09:11
|
(8) раньше это когда?
|
|||
12
Cube
20.01.15
✎
09:12
|
(11) Найти не могу, но давно :)
|
|||
13
фобец
20.01.15
✎
09:13
|
Если Ложь И ...// это ложь, дальше уже не проверяем
Если Истина Или ..// это истина, дальше уже не проверяем |
|||
14
roman383
20.01.15
✎
09:14
|
(6) где можно почитать про "ленивую логику"? У всех языков программирования она "ленивая" или нет?
|
|||
15
Deon
20.01.15
✎
09:14
|
(11) В 7.7 вроде была
|
|||
16
dk
20.01.15
✎
09:16
|
причем надо проверять как в коде, так и в запросах - могут отличаться
|
|||
17
Deon
20.01.15
✎
09:18
|
(16) В запросах, наверно, от СУБД зависеть может
|
|||
18
фобец
20.01.15
✎
09:21
|
(14)
1) Не знаю, здесь наверное http://ru.m.wikipedia.org/wiki/Стратегия_вычисления#.D0.9D.D0.B5.D1.81.D1.82.D1.80.D0.BE.D0.B3.D0.B8.D0.B5_.D0.B2.D1.8B.D1.87.D0.B8.D1.81.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F 2) Не у всех конечно |
|||
19
фобец
20.01.15
✎
09:23
|
Нестрогие вычисленияПравить
|
|||
20
Cube
20.01.15
✎
09:24
|
(15) Возможно))))
|
|||
21
polosov
20.01.15
✎
09:25
|
(14) Тут наверное вопрос надо задавать разрабам платформы. На партнерском форуме пусть задаст кто-нибудь из франчей.
|
|||
22
Зеленый пень
20.01.15
✎
09:25
|
(0) В 7.7 - выполняется, в 8.0 и выше - не выполняется. Точка.
|
|||
23
GROOVY
20.01.15
✎
09:28
|
(21) Проверить лень?
|
|||
24
Deon
20.01.15
✎
09:28
|
(13) Про ИЛИ я, кстати, как-то не задумывался. Спасибо.
|
|||
25
Lexey_
20.01.15
✎
09:29
|
(7) не убедило?
|
|||
26
dk
20.01.15
✎
09:31
|
в файловой 8-ке в запросе ленивая логика
в скульной тоже ленивая в запросе |
|||
27
polosov
20.01.15
✎
09:33
|
Нда ленивая.
|
|||
28
Оранжевое настроение
20.01.15
✎
09:53
|
В 7.7 будет, в 8.х не будет
|
|||
29
extrim-style
20.01.15
✎
10:25
|
(4) > "Отсюда можно сделать вывод, что логические выражения (которые ты заключишь в скобки буду вычислены оба)"
ошибочное утверждение (ЛогВыр1 И ЛогВыр2) в случае ЛогВыр1 = ЛОЖЬ, также не будет вычислять ЛогВыр2, как и в случае без скобок, т.к. наличие скобок не отменяет следующей за ним последовательности операций. |
|||
30
polosov
20.01.15
✎
10:29
|
(29) Проверили уже. Кофейку попей ))
|
|||
31
extrim-style
20.01.15
✎
10:33
|
(30) я кофе не пью, расслабься
|
|||
32
Гёдза
20.01.15
✎
10:34
|
в делфи помнится ключ компилятора был. А в 1С всегда короткая логика
|
|||
33
Vladal
20.01.15
✎
11:50
|
(14) У 7.7 она была "не ленивая". У 8 оптимальная.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |