Отрицание пустого значения

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Отрицание пустого значения

Post by Raistlin »

Два макроса с противоположными условиями:

Code: Select all

%s=; $If (%s == "123") msgbox("1") $Else msgbox("2") $End

Code: Select all

%s=; $If (!%s == "123") msgbox("1") $Else msgbox("2") $End
дают один и тот же результат - "2". Баг или фича?
Magically yours
Raistlin
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Отрицание пустого значения

Post by Skirda »

что такое "!%s"?
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Re: Отрицание пустого значения

Post by Raistlin »

Ну... это я просто подзабыл синтаксис, уже поправил свой макрос с использованием '!='. Однако:

Code: Select all

%s="23"; $If (!%s == "123") msgbox("1") $Else msgbox("2") $End
дает "2", а

Code: Select all

%s="123"; $If (!%s == "123") msgbox("1") $Else msgbox("2") $End
дает "1". То есть поведение для пустой и непустой строки различается.
Magically yours
Raistlin
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Отрицание пустого значения

Post by John Doe »

Если %s - строка, то всегда !%s==%s

Code: Select all

macro:post print(!"")
macro:post print(!"23")
macro:post print(!"123")
Т.е. не производится приведение типов.
(Надо ли это фиксить я не знаю)
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Re: Отрицание пустого значения

Post by Raistlin »

Да, понятно. Мой вывод
поведение для пустой и непустой строки различается
неправилен. Наверное, можно забить на это, синтаксис у меня был изначально неверный.
Magically yours
Raistlin
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Отрицание пустого значения

Post by HaRT »

Мои две копейки: насколько я помню, концепция типов в макросах близка к AWK'шной. Так вот, выполняю , получаю .
Т.е. для отрицания строки важно только, пустая ли она, а при преобразовании в число уже учитывается его значение (странно, да?).
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

Return to “Обсуждение макросов”