powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / риторический вопрос
16 сообщений из 16, страница 1 из 1
риторический вопрос
    #35245928
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему так
Код: plaintext
 s:(a&&b) c= 1  
правильно, а так
Код: plaintext
 s:(a,b) c= 1  
нет?
...
Рейтинг: 0 / 0
риторический вопрос
    #35246455
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вас, вероятно, смутила семантическая эквивалентность конструкций:
Код: plaintext
if expr1,expr2 {...}
и
Код: plaintext
if expr1 && (expr2) {...}
Однако синтаксически здесь "две большие разницы": запятая - не оператор, а разделитель между аргументами команды if, а &&, напротив, является оператором, участвующим в построении выражения. В вашем случае вы пытаетесь использовать "," внутри постусловия, которое является выражением, но не командой.
...
Рейтинг: 0 / 0
риторический вопрос
    #35247429
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
Код: plaintext
if expr1,expr2 {...}
и
Код: plaintext
if expr1 && (expr2) {...}

да еще и
Код: plaintext
if expr1 & (expr2) {...}


Они весьма близки, но на
Код: plaintext
if expr1,expr2 s c= 1 
компилятор Каше не ругается, а на
Код: plaintext
s:expr1,expr2 c= 1 
ругается. Вопрос: почему?
...
Рейтинг: 0 / 0
риторический вопрос
    #35247574
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что по определению языка
Код: plaintext
set:<логич.выраж-е> <аргумент set>[,<аргумент set>]
Запятая ожидается в качестве разделителя между <аргументами set>, но не как элемент <логич.выраж-я> (так как оператором она не является).
...
Рейтинг: 0 / 0
риторический вопрос
    #35247654
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно весьма, почему тогда в логических выражениях используется знак, не являющийся оператором языка? Это вопрос к Intersystems?
...
Рейтинг: 0 / 0
риторический вопрос
    #35247685
Игорь Сойников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы ошибаетесь запятая разделяет оператры и конструкция If (op1),(op2)
аналогична записи If (op1) If (op2) так же как и все остальные команды S, K и т.д.
...
Рейтинг: 0 / 0
риторический вопрос
    #35247692
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshkaпочему тогда в логических выражениях используется
Это скорее не "логическое выражение", а перечень логических выражений. Улавливаеш разницу?
Но вопрос однозначно к IS.
...
Рейтинг: 0 / 0
риторический вопрос
    #35247737
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Сойниковвы ошибаетесь ...
в чём именно?
...
Рейтинг: 0 / 0
риторический вопрос
    #35247782
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshkaпочему тогда в логических выражениях используется знак, не являющийся оператором языкаЭто не так. Команда IF определена так:
Код: plaintext
1.
2.
3.
if <аргумент if>[,<аргумент if]...

<аргумент if> ::= <логич.выражение>
                  @<простейшее выраж-е>
Действительно, отсутствие опубликованного формального определения языка не есть good. Я цитирую Приложение А к книге С.Гессе и В.Кирстена "Язык программирования М" (СПб, 1996), которое написано на основе стандарта ANSI X11.1/1995. Книгу эту (AKA "серый Кирстен") вы едва ли найдете, но доступен в он-лайне сам стандарт M: тынц . Это, конечно, не COS, а M, не ищите там {...} и $List() :).
...
Рейтинг: 0 / 0
риторический вопрос
    #35247856
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вобщем, что я понял,так это следующее:
здесь
Код: plaintext
if a&b s c= 1 
и здесь
Код: plaintext
if a&&b s c= 1 
"a&b" и "a&&b" рассматривается как одно логическое выражение, а "a" и "b" как его составляющие,
а здесь
Код: plaintext
if a,b s c= 1 
"a" и "b" - два разных логических выражения и, следовательно, компилятор видит ошибку при наличии двух логических выражений при операторе "set"
Код: plaintext
s:(a,b) c= 1 
А здесь
Код: plaintext
if (a,b) s c= 1 
значит компилятор считает, что в составе одного логического выражения два других?
...
Рейтинг: 0 / 0
риторический вопрос
    #35247878
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshka
Код: plaintext
if (a,b) s c= 1 
значит компилятор считает, что в составе одного логического выражения два других?
Нет там "одного". Их там синтаксически два! Так понятно?
...
Рейтинг: 0 / 0
риторический вопрос
    #35247908
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
Нет там "одного". Их там синтаксически два! Так понятно?
ага, тем более что на это
Код: plaintext
if (a,b) s c= 1 
компилятор тоже ругается :)
Ибо уж это точно ошибка
...
Рейтинг: 0 / 0
риторический вопрос
    #35247958
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предположу, что ваше
Код: plaintext
if (a,b) s c= 1 
компилятор понимает как
Код: plaintext
if (a if b) s c= 1 
поэтому и ругается.

а
Код: plaintext
if (a),(b) s c= 1 
компилятор понимает как
Код: plaintext
if (a) if (b) s c= 1 
поэтому это нормально.
...
Рейтинг: 0 / 0
риторический вопрос
    #35247973
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н. , тоже так считаю
...
Рейтинг: 0 / 0
риторический вопрос
    #35248178
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потестировал...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
REG>s a= 1 
 
REG>s b= 1 
 
REG>if (a,b) w  1 
 
IF (a,b) w  1 
^
<SYNTAX>
REG>if a,b w  1 
 1 
Лишний раз убедился, что скобки нужны лиш там, где они нужны...
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
риторический вопрос
    #35248351
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa... скобки нужны лиш там, где они нужны...
эт точно (с)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / риторический вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]