bug in if()

bug in if() - immediate evaluation behind line() - Сообщения

#1 Опубликовано: 26.03.2022 08:49:18
Martin_B

Martin_B

21 сообщений из 84 понравились пользователям.

Группа: User

Hi!

Is this a bug in if()?

It turns to a real problem e.g. when used in a case like shown in the example.

bug_if.png
bug_if.sm (15 КиБ) скачан 37 раз(а).
#2 Опубликовано: 26.03.2022 21:18:52
overlord

overlord

547 сообщений из 1330 понравились пользователям.

Группа: Moderator

Wrote

Hi!

Is this a bug in if()?

It turns to a real problem e.g. when used in a case like shown in the example


Yes, it is a bug.

if() function doesn't like plotting, solvers, custom functions as in your example, etc.

You have to use cases() for that kind of usages.

Regards
#3 Опубликовано: 29.03.2022 06:08:28
Davide Carpi

Davide Carpi

1415 сообщений из 2872 понравились пользователям.

Группа: Moderator

Just to clarify, this is not a fault in the specific function, it works this way because the current architecture of the core doesn't allows a different implementation (thus can't be simply fixed with a change in the function itself).

if(...) currently requires the condition argument to be defined on evaluation, otherwise an error is thrown; this makes the if/else instructions sealed from further evaluations of the preprocessor.

As opposite cases(...) doesn't throw errors on simbolic conditions, but this makes instructions evaluable (thus you shouldn't add any definition in the case() arguments).



If you like my plugins please consider to support the program buying a license; for personal contributions to me: paypal.me/dcprojects
1 пользователям понравился этот пост
sergio 29.03.2022 10:15:00
  • Новые сообщения Новые сообщения
  • Нет новых сообщений Нет новых сообщений