Последняя версия DataExpress 3 beta от 1 сентября 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Format или сложение?

Все о том как сделать что-то с помощью скриптов.
Аватара пользователя
Develop-Soft
Сообщения: 709
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 35 раз
Поблагодарили: 162 раза
Контактная информация:

Format или сложение?

Сообщение Develop-Soft » Вт июн 25, 2019 10:04 am

Чем функционально Format выигрывает (или проигрывает) в отличие от обычной склейки с переменными?

Аватара пользователя
admin
Разработчик
Сообщения: 4515
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 72 раза

Format или сложение?

Сообщение admin » Вт июн 25, 2019 11:16 am

Для меня Format удобнее и нагляднее, если надо вставить какие-то переменные в строку.

Аватара пользователя
Develop-Soft
Сообщения: 709
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 35 раз
Поблагодарили: 162 раза
Контактная информация:

Format или сложение?

Сообщение Develop-Soft » Вт июн 25, 2019 12:14 pm

На вкус и цвет, как говорится, но по мне, так:

Код: Выделить всё

Self.Ass['Клиент|Наименование']+', именуемое в дальнейшем «'+Self.Ass['Клиент_Статус']+'», в лице '+Self.Ass['Клиент|Должность руководителя']+' '+Self.Ass['Клиент|ФИО Руководителя']+', действующего на основании '+Self.Ass['Клиент|Основание']+', с одной стороны, и «'+Self.Ass['Организация|Наименование']+'», именуемое в дальнейшем «'+Self.Ass['Организация_Статус']+'», в лице '+Self.Ass['Организация|Должность руководителя']+', действующего на основании '+Self.Ass['Организация|Основание']+', с другой стороны, заключили настоящий договор о нижеследующем:'

смотрится как-то более наглядно и последовательно, чем:

Код: Выделить всё

Format('%s, именуемое в дальнейшем «%s», в лице %s %s, действующего на основании %s, с одной стороны, и «%s», именуемое в дальнейшем «%s», в лице %s, действующего на основании %s, с другой стороны, заключили настоящий договор о нижеследующем:',[Self['Клиент|Наименование'], Self['Клиент_Статус'], Self['Клиент|Должность руководителя'],  Self['Клиент|ФИО Руководителя'], Self['Клиент|Основание'], Self['Организация|Наименование'],  Self.Ass['Организация_Статус'], Self['Организация|Должность руководителя'],Self['Организация|Основание'],  Self['Организация|Основание']])
, где можно рехнуться на одном только контроле позиций вставляемых переменных.
..то выходит как в анекдоте:
— Мальчик, как тебя зовут?
— ...
— А сколько тебе лет?
— Серёжа
— А кем ты хочешь стать?
— 6
— Мальчик, ты что, тормоз???
— Космонавтом…


Аватара пользователя
admin
Разработчик
Сообщения: 4515
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 72 раза

Format или сложение?

Сообщение admin » Вт июн 25, 2019 3:17 pm

Понятно, что format не всегда лучше. Так еще лучше:

Код: Выделить всё

format('[Клиент|Наименование], именуемое в дальнейшем «[Клиент_Статус]», в лице [Клиент|Должность руководителя] [Клиент|ФИО Руководителя], действующего на основании [Клиент|Основание], с одной стороны, и «[Организация|Наименование]», именуемое в дальнейшем «[Организация_Статус]», в лице [Организация|Должность руководителя], действующего на основании [Организация|Основание], с другой стороны, заключили настоящий договор о нижеследующем:')
Вот думаю добавить ли такую функцию в выражения? А то функция concat как-то все равно не очень удобна.

Аватара пользователя
Develop-Soft
Сообщения: 709
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 35 раз
Поблагодарили: 162 раза
Контактная информация:

Format или сложение?

Сообщение Develop-Soft » Вт июн 25, 2019 3:25 pm

Выглядит ниче так... Даже б сказал - лучше некуда. Правда возникает вопроc: как быть с экранированием, если потребуется поместить в тексте [Что нибудь] "как есть".

Аватара пользователя
admin
Разработчик
Сообщения: 4515
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 72 раза

Format или сложение?

Сообщение admin » Вт июн 25, 2019 3:33 pm

Можно использовать слэш:
\n - новая строка, \xКодСимвола, \\ - слэш, \[, \{, {выражение}, $переменная.

Аватара пользователя
Develop-Soft
Сообщения: 709
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 35 раз
Поблагодарили: 162 раза
Контактная информация:

Format или сложение?

Сообщение Develop-Soft » Вт июн 25, 2019 3:44 pm

Дело пахнет керосином... Еще присутствует тонкий аромат html+javascript и легкий "оттенок" php (c $переменной) :lol: . Двумя ручищами за простоту, но как бы не стало все сложнее...

А что если какие-нибудь нереальные теги? [[Так]] или {[Так..]}

Аватара пользователя
admin
Разработчик
Сообщения: 4515
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 72 раза

Format или сложение?

Сообщение admin » Вт июн 25, 2019 4:00 pm

Можно и так. Хотел, чтобы format убирал символы перевода строки, когда пишешь выражение так:

Код: Выделить всё

format('первая строка
вторая строка\n
третья строка')

Вместо:

Код: Выделить всё

format('первая строка ' + 
'вторая строка ' + newline +
'третья строка')

Или использовать _ в конце вместо \n... А можно убирать символы новой строки и вычислять выражения {newline}:

Код: Выделить всё

[code]
format('первая строка
вторая строка{newline}
третья строка')
[/code]

Аватара пользователя
Develop-Soft
Сообщения: 709
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 35 раз
Поблагодарили: 162 раза
Контактная информация:

Format или сложение?

Сообщение Develop-Soft » Вт июн 25, 2019 4:14 pm

Наверное для подобной реализации лучше взять за основу какой-нибудь rfc-документ, описывающий какой-нибудь из аналогичных стандартов...

Аватара пользователя
Develop-Soft
Сообщения: 709
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 35 раз
Поблагодарили: 162 раза
Контактная информация:

Format или сложение?

Сообщение Develop-Soft » Вт июн 25, 2019 4:25 pm

admin писал(а):Или использовать _ в конце вместо \n...

\n как-то "роднее" что-ли...
admin писал(а):

Код: Выделить всё

format('первая строка
вторая строка{newline}
третья строка')

А оно ж и сейчас неплохо работает:
Изображение