Автокликер Clickermann :: Форум
Основной раздел => Ошибки => Архив => Topic started by: A2Dept on November 29, 2013, 08:00:18 AM
-
Отключена вложенность выражений в нескольких скобках?
Во внутрь ифа я не попадаю, это самый простой пример.
$a = 1
$b = 2
if ( (($a = 1) & ($b = 2)) )
print("Hello, world!")
end_if
Вот пример посложнее, снова "Хелоу..." в логах не пишут.
$a = 1
$b = 2
$c = 3
if ( (($a = 1) & ($b = 2)) | (($a = 1) & ($c = 2)) )
print("Hello, world!")
end_if
В примечаниях в мануале написано "Приоритетные скобки не поддерживаются", хз, что это для программистов и математиков означает ;D Сори, если эта фраза относится к моим примерам, если это так, то планируется ли ввод в следующих версиях (у меня Clickermann v4.8 (build 000)) многомерная вложенность скобок? Если "нет", то почему?
-
Отключена вложенность выражений в нескольких скобках?
Во внутрь ифа я не попадаю, это самый простой пример.
$a = 1
$b = 2
if ( (($a = 1) & ($b = 2)) )
print("Hello, world!")
end_if
Вот пример посложнее, снова "Хелоу..." в логах не пишут.
$a = 1
$b = 2
$c = 3
if ( (($a = 1) & ($b = 2)) | (($a = 1) & ($c = 2)) )
print("Hello, world!")
end_if
В примечаниях в мануале написано "Приоритетные скобки не поддерживаются", хз, что это для программистов и математиков означает ;D Сори, если эта фраза относится к моим примерам, если это так, то планируется ли ввод в следующих версиях (у меня Clickermann v4.8 (build 000)) многомерная вложенность скобок? Если "нет", то почему?
В первом примере лишние скобки. Вот так нужно:
$a = 1
$b = 2
if (($a = 1) & ($b = 2))
print("Hello, world!")
end_if
Во втором да, ограничение. Логическим операторам & (AND) , | (OR), ^ (XOR) нельзя задать приоритет (очерёдность выполнения) скобками. Они выполняются только слева направо как написаны.
1 2 3
if ( (($a = 1) & ($b = 2)) | (($a = 1) & ($c = 2)) )
Соответственно и скобки там стоят неправильно.
Нужно как то выкручиваться, например вложенными сравнениями
$a = 1
$b = 2
$c = 3
$n = 0
IF(($a = 1) & ($b = 2))
$n = 1
ELSE
IF(($a = 1) & ($c = 2))
$n = 1
END_IF
END_IF
IF($n = 1)
print("Hello, world!")
END_IF
Не красиво, ну ладно :) может если подумать можно проще сделать. Ну или действия 2 раза писать если небольшие (большие можно выделить в подпрограмму.
$a = 1
$b = 2
$c = 3
IF(($a = 1) & ($b = 2))
print("Hello, world!")
ELSE
IF(($a = 1) & ($c = 2))
print("Hello, world!")
END_IF
END_IF
-
Жаль, что нельзя кучу скобок для логических операций. Кучу ифов городить - как-то не совсем правильно. Ну, это мое интуитивное мышление бунтует, не программист (мб программистам и норм). А кучу скобок сложно технически реализовать?
-
Это вопрос к Джонни.
Я думаю он просто отложил на "потом" как второстепенное. Не так часто используется и можно выкрутится. Надеюсь впоследствии добавит возможность.