OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 25 Сентябрь, 2020 07:25

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 67 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Четверг, 10 Май, 2007 15:11 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1473
Уважаемые коллеги, прельщает ли кого-нить вот, например такая форма записи операций вывода?
StdLog.Out.String("result: ").Int(var).String("-th is ").Float(float_value);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 15:47 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4444
Откуда: Россия, Орёл
Не, спасибо. :) Хотя кому-то может и полезно. Тем не менее, это (пока что) недопустимая конструкция. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 16:02 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4444
Откуда: Россия, Орёл
Борис Рюмшин писал(а):
Не, спасибо. :) Хотя кому-то может и полезно. Тем не менее, это (пока что) недопустимая конструкция. :)


Хе-хе... ну да, это смотря как посмотреть... :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 16:03 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1473
Борис Рюмшин писал(а):
Не, спасибо. :) Хотя кому-то может и полезно. Тем не менее, это (пока что) недопустимая конструкция. :)

Почему?
Определяем общего предка для "потоков", в нём (или в одном из его наследников) - функции вывода для предопределённых типов. Возвращаемое значение - ссылка на this потока...


Последний раз редактировалось Wlad Четверг, 10 Май, 2007 16:04, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 16:04 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4444
Откуда: Россия, Орёл
Wlad писал(а):
Борис Рюмшин писал(а):
Не, спасибо. :) Хотя кому-то может и полезно. Тем не менее, это (пока что) недопустимая конструкция. :)

Почему?
Определяем общий наследник для "потока", в нём (или в одном из его наследников) - функции вывода для предопределённых типов. Возвращаемое значение - ссылка на this потока...

Не, я уже понял :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 16:06 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1473
Борис Рюмшин писал(а):
Не, я уже понял :)

... и перегрузка операций... :twisted:

StdLog.log & "result: " & var & "-th is " & float_value;


Последний раз редактировалось Wlad Четверг, 10 Май, 2007 16:09, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 16:07 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4593
Откуда: Россия, Орёл
Ага, если переписать StdLog, то получим вывод как в C++:
Код:
(((std::cout.operator << ("a = ")).operator <<(a)).operator <<("b = ")).operator <<(b);
// или
std::cout << "a = " << a << "b = " << b;

Исли потрясти всех наших студентов, которые используют последнее, то из них врят ли сыщется 10, которые смогут записать первое.

ИМХО, нам такая запись не нужна, дабы не нарушать принципа чистоты функций. Хотя без сомнения, она более краткая.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 16:11 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1473
Евгений Темиргалеев писал(а):
Хотя без сомнения, она более краткая.

Я там выше добавил...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 16:13 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4593
Откуда: Россия, Орёл
Wlad писал(а):
Борис Рюмшин писал(а):
Не, я уже понял :)

... и перегрузка операций... :twisted:

StdLog.log & "result: " & var & "-th is " & float_value;

Эта штука не будет работать, так как в КП нет "оператора-выражения", который бы позволил что-то вычислить и выкинуть вычисленное на помойку. Поэтому только так:
Код:
out := StdLog.log & "result: " & var & "-th is " & float_value;
И то, в том случае, если бы мы могли перегрузить & для "StdLog.Out". Так что в инфиксной форме записать не получиться вообще.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 16:22 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1473
Евгений Темиргалеев писал(а):
Так что в инфиксной форме записать не получиться вообще.

Я - не про "выйдет-не выйдет", я - про "нравится-не нравится" спрашивал...
"Красивый самолёт хорошо летает"...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 16:34 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1298
Мне не нравицца.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 16:40 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1473
Trurl писал(а):
Мне не нравицца.

Ну на нет - и суда нет! :о)
"... - А что, отец, в вашем городе невесты есть?
- А кому и кобыла - невеста...
- Вопросов не имею... " :о) (с) О.Бендер


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Май, 2007 17:18 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4593
Откуда: Россия, Орёл
Wlad писал(а):
Уважаемые коллеги, прельщает ли кого-нить вот, например такая форма записи операций вывода?
StdLog.Out.String("result: ").Int(var).String("-th is ").Float(float_value);

Сказывается долгое программирование на C++. Мы упустили, что и этот вариант может быть записан только так:
Код:
out := StdLog.Out.String("result: ").Int(var).String("-th is ").Float(float_value);
//или
StdLog.Write(StdLog.Out.String("result: ").Int(var).String("-th is ").Float(float_value));
// StdLog.Write - процедура


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 17:32 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9283
Откуда: Россия, Орёл
А еще есть вариант:

StdLog.Print("$result: $var-th is $float_value");

Не хотите? :-)

А что, через раскрутку локального контекста реализовать проще пареной репы...
Для отладки может быть полезно :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 17:35 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1473
Илья Ермаков писал(а):
А еще есть вариант:
StdLog.Print("$result: $var-th is $float_value");
Не хотите? :-)


ХОТИМ!!!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Май, 2007 17:37 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1473
Евгений Темиргалеев писал(а):
Wlad писал(а):
Уважаемые коллеги, прельщает ли кого-нить вот, например такая форма записи операций вывода?
StdLog.Out.String("result: ").Int(var).String("-th is ").Float(float_value);

Сказывается долгое программирование на C++. Мы упустили, что и этот вариант может быть записан только так:
Код:
out := StdLog.Out.String("result: ").Int(var).String("-th is ").Float(float_value);
//или
StdLog.Write(StdLog.Out.String("result: ").Int(var).String("-th is ").Float(float_value));
// StdLog.Write - процедура

Шо вы мене говорите?
Зачем вам явно во втором варианте вызыват Write, когда вы можете методы объекта объявить (String, Int, Float и т.д.), которые и будут к Write обращаться?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 18:45 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4444
Откуда: Россия, Орёл
Wlad писал(а):
Илья Ермаков писал(а):
А еще есть вариант:
StdLog.Print("$result: $var-th is $float_value");
Не хотите? :-)


ХОТИМ!!!


Вы поосторожнее, а то он и правда щаз навояет такую байду... :lol:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 21:27 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1473
Борис Рюмшин писал(а):
Вы поосторожнее, а то он и правда щаз навояет такую байду... :lol:

А и хорошо! Упражнение для умища!
Мне только предупредить хотелось бы, что символ американского рубля нам, сам по себе, ещё может понадобиться для отображения... :о)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Май, 2007 22:46 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4593
Откуда: Россия, Орёл
Wlad писал(а):
...
Зачем вам явно во втором варианте вызыват Write, когда вы можете методы объекта объявить (String, Int, Float и т.д.), которые и будут к Write обращаться?
Я имел в виду вызов ПРОЦЕДУРЫ Write или любой другой - имя значение не имеет, вызов которой (в отличие от ПРОЦЕДУРЫ-ФУНКЦИИ) может быть записан в виде оператора КП. Назначение этой процедуры - проглотить значение ПРОЦЕДУРЫ-ФУНКЦИИ StdLog.Out.String("").... и ничего с ним не делать. Такой вариант и компилироваться будет, и работать так, как предполагалось без него.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 22:48 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9283
Откуда: Россия, Орёл
Борис Рюмшин писал(а):
Wlad писал(а):
Илья Ермаков писал(а):
А еще есть вариант:
StdLog.Print("$result: $var-th is $float_value");
Не хотите? :-)


ХОТИМ!!!


Вы поосторожнее, а то он и правда щаз навояет такую байду... :lol:

А что ее ваять... Вон наполовину сваяна уже:
viewtopic.php?t=404


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 67 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2020, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB