Вот выдержка разговора наших участников о логических операциях в Salesforce, их глюках и преимуществах (группа Skype для salesforce разработчиков)
Gres: Нашел багу в компиляторе,
if(sObj.myCheckbox = false
&& sObj.myInt > 0) {
//code
}
Компилируется и выполняется
RasMisha: потому что myCheckbox - boolean
Gres: все равно прикольно
Gres: =)
wilder: а не должно....так как это сравнение, а не присвоение
Dmitry Lisovsky: там ведь только присвоение, без сравнения
Gres: что в условии можно делать присваивание
Gres: кст, тут один чел скидывал кучу примеров, на счет вычисления различных логических выражений в Apex, то что должно работать по документации на практике не работает
Gres: особенно связка бинарных опертаров с чем-либо
RasMisha: то есть вы никогда не видели такую конструкцию
RasMisha: a = b = false?
Dmitry Shnyrev: Круто! Я нет.
Gres: Например, Boolean Test_boolean3 = b4>b3 == b2 || b1
Gres: Рельно не видел?
Gres: 0_о
RasMisha: угадайте чему ровно b = false в таком выражении
RasMisha:
Dmitry Shnyrev: В смысле видел, в реальном применении не видел
RasMisha: это я к вопросу почему условие срабатывает
Gres: Boolean b = b1 | b2 & b3 | !b4^b1 не компилится
Dmitry Lisovsky: true
Dmitry Shnyrev: trueэто потому что операция присвоения выполнилась успешно.
RasMisha: эээ
Dmitry Lisovsky: а иначе никак)
RasMisha: иначе (b = false) = (b = false; return b; )
RasMisha: хотя компилер мог бы быть умнее
RasMisha: и всё равно не давать такое делать в условиях
RasMisha: поэтому a = false
RasMisha: и b = false
Dmitry Lisovsky: да, false
Gres: логично)
RasMisha: в реальном применении не видели я тоже надеюсь не увидеть
Dmitry Shnyrev: логично)из всей вашей логичной беседе о логиге это выглядит самым логичным
Gres: слишком много маслянного масла
RasMisha: ну и вообще
RasMisha: в той же джаве (на память точно не помню, но как-то так)
RasMisha: while ((line = input.nextLine()) != null) { ... }
Maxim Elets: ух сколько я пропустил)
Gres: Ну в циклах это более мене логично
Maxim Elets: while ((line = input.nextLine()) != null) { ... }а что тут не так?
Dmitry Lisovsky: логично)
RasMisha: тут всё так
Gres: Даже я использую
RasMisha: просто не понимаю чего удивляться то что b=false отрабатывает в условии
RasMisha: а чем отличается if от while? ^)
Gres: Просто никогда не видел именно в условии
RasMisha: while = if + goto before if
Вот выдержка разговора наших участников о логических операциях в Salesforce, их глюках и преимуществах (группа Skype для salesforce разработчиков) [i][b]Gres:[/b] Нашел багу в компиляторе, if(sObj.myCheckbox = false && sObj.myInt > 0) { //code } Компилируется и выполняется [b]RasMisha:[/b] потому что myCheckbox - boolean [b]Gres:[/b] все равно прикольно [b]Gres:[/b] =) [b]wilder:[/b] а не должно....так как это сравнение, а не присвоение [b]Dmitry Lisovsky:[/b] там ведь только присвоение, без сравнения [b]Gres:[/b] что в условии можно делать присваивание [b]Gres:[/b] кст, тут один чел скидывал кучу примеров, на счет вычисления различных логических выражений в Apex, то что должно работать по документации на практике не работает [b]Gres:[/b] особенно связка бинарных опертаров с чем-либо [b]RasMisha:[/b] то есть вы никогда не видели такую конструкцию [b]RasMisha:[/b] a = b = false? [b]Dmitry Shnyrev:[/b] Круто! Я нет. [b]Gres:[/b] Например, Boolean Test_boolean3 = b4>b3 == b2 || b1 [b]Gres:[/b] Рельно не видел? [b]Gres:[/b] 0_о [b]RasMisha:[/b] угадайте чему ровно b = false в таком выражении [b]RasMisha:[/b] :) [b]Dmitry Shnyrev:[/b] В смысле видел, в реальном применении не видел [b]RasMisha:[/b] это я к вопросу почему условие срабатывает [b]Gres:[/b] Boolean b = b1 | b2 & b3 | !b4^b1 не компилится [b]Dmitry Lisovsky:[/b] true [b]Dmitry Shnyrev:[/b] trueэто потому что операция присвоения выполнилась успешно. [b]RasMisha:[/b] эээ [b]Dmitry Lisovsky:[/b] а иначе никак) [b]RasMisha:[/b] иначе (b = false) = (b = false; return b; ) [b]RasMisha:[/b] хотя компилер мог бы быть умнее [b]RasMisha:[/b] и всё равно не давать такое делать в условиях [b]RasMisha:[/b] поэтому a = false [b]RasMisha:[/b] и b = false [b]Dmitry Lisovsky:[/b] да, false [b]Gres:[/b] логично) [b]RasMisha:[/b] в реальном применении не видели я тоже надеюсь не увидеть [b]Dmitry Shnyrev:[/b] логично)из всей вашей логичной беседе о логиге это выглядит самым логичным :D [b]Gres:[/b] слишком много маслянного масла [b]RasMisha:[/b] ну и вообще [b]RasMisha:[/b] в той же джаве (на память точно не помню, но как-то так) [b]RasMisha:[/b] while ((line = input.nextLine()) != null) { ... } [b]Maxim Elets:[/b] ух сколько я пропустил) [b]Gres:[/b] Ну в циклах это более мене логично [b]Maxim Elets:[/b] while ((line = input.nextLine()) != null) { ... }а что тут не так? [b]Dmitry Lisovsky:[/b] логично) [b]RasMisha:[/b] тут всё так [b]Gres:[/b] Даже я использую [b]RasMisha:[/b] просто не понимаю чего удивляться то что b=false отрабатывает в условии [b]RasMisha:[/b] а чем отличается if от while? ^) [b]Gres:[/b] Просто никогда не видел именно в условии [b]RasMisha:[/b] while = if + goto before if[/i]