1 страниц (6 вхождений)
If-Else - Сообщения
#1 Опубликовано: 23.08.2012 18:05:20
Очень хотелось бы увидеть вариант блока IF без ELSE
#2 Опубликовано: 23.08.2012 20:17:35
If - это функция. Она, как и все функции, возвращает значение, поэтому она должна иметь возможность вычислить это значение при любом раскладе. Если это значение не важно, можно написать
[MATH]if(Condition;Expression;0)[/MATH]
В качестве альтернативы можно было бы только генерировать ошибку при проходе алгоритма по незаданному else-пути, как это сделано, например, в erlang. Но это ведь не то, что Вам надо?
[MATH]if(Condition;Expression;0)[/MATH]
В качестве альтернативы можно было бы только генерировать ошибку при проходе алгоритма по незаданному else-пути, как это сделано, например, в erlang. Но это ведь не то, что Вам надо?
С уважением,
Михаил Каганский
#3 Опубликовано: 24.08.2012 03:43:05
WroteIf - это функция. Она, как и все функции, возвращает значение, поэтому она должна иметь возможность вычислить это значение при любом раскладе. Если это значение не важно, можно написать
[MATH]if(Condition;Expression;0)[/MATH]
В качестве альтернативы можно было бы только генерировать ошибку при проходе алгоритма по незаданному else-пути, как это сделано, например, в erlang. Но это ведь не то, что Вам надо?
Спасибо за ответ, но то, что if это функция - утверждение, в рамках ЯП, спорное (скорее уж оператор). В любом случае (если в SMath Studio это функция), удобный дизайн может реализовывать else-ветвь за пользователя, "автоматом" возвращая 0 в случае если ветвь не определена (подобно тому как int main можно заменить на void main).
#4 Опубликовано: 24.08.2012 04:05:23
Ну, насчёт ЯП - мы тут на форуме конкретного продукта, и говорим о конкретных вещах. Так что давайте не обобщать, а то ведь я знаю ещё и такой факт об if-else, что это - речевая конструкция, определяющая сложноподчинённое предложение 
В рамках SMath - это функция:
[MATH]a:if(Condition;Expr1;Expr2)[/MATH]
А удобный дизайн сделает результат такого присвоения неочевидным. Пользователь может не ожидать увидеть 0 не только в случае вычисления Expr1, но и в результате Condition=false.
Кстати, именно ЯП примера, приведённого Вами, исторически демонстрирует, что "удобством" следует жертвовать, если оно что-то делает неявным: что случиось с неявным int?

В рамках SMath - это функция:
[MATH]a:if(Condition;Expr1;Expr2)[/MATH]
А удобный дизайн сделает результат такого присвоения неочевидным. Пользователь может не ожидать увидеть 0 не только в случае вычисления Expr1, но и в результате Condition=false.
Кстати, именно ЯП примера, приведённого Вами, исторически демонстрирует, что "удобством" следует жертвовать, если оно что-то делает неявным: что случиось с неявным int?
С уважением,
Михаил Каганский
#5 Опубликовано: 28.08.2012 22:22:05
Хотя с другой стороны: если if(условие;выражение) в отличие от if(условие;выражение1;выражение2) не будет функцией (т.е. будет вести себя в этом смысле подобно for - при использовании в правой части присвоения выдавать ошибку "выражение задано неверно"), то всё будет чётко и прозрачно...
С уважением,
Михаил Каганский
1 пользователям понравился этот пост
impersonalis 29.08.2012 09:14:00
#6 Опубликовано: 29.08.2012 09:13:50
Wrote(т.е. будет вести себя в этом смысле подобно for - при использовании в правой части присвоения выдавать ошибку "выражение задано неверно"), то всё будет чётко и прозрачно...
к тому же, тайп-каст bool->int можно реализовать (в SMath уже реализовано) непосредственным умножением на условие (имхо, очень удобно).
Например, функция-знак может быть реализована следующим образом:
Цитатаsgn(x):=(x>0)-(x<0)
1 страниц (6 вхождений)
-
Новые сообщения
-
Нет новых сообщений