пятница, 14 сентября 2007 г.

X++: метод strfmt()

[id:47]

Метод strfmt() — первый на очереди, когда хочется выразить свое недовольство действиями пользователя. Это то же самое, что и функция printf() в языке С++. Это тоже самое, что и метод String.Format() в .NET. Да, правильно, этим методом формируют строки. Места для подстановки значений обозначаются парой «процент-число». Поехали: static void BLG47_Ads(Args _args) { Counter cnt; str AdString(str sex, str horoscope, str behavoiur, str partner, str purpose) { return strfmt('#%6, %1, знак зодиака %2, %3, ищет %4 для %5', sex, horoscope, behavoiur, partner, purpose, cnt); } ; cnt++; info(AdString('мужчина', 'близнец', 'без в/п', 'женщину', 'создания семьи')); cnt ++; info(AdString('женщина', 'скорпион', 'курю/выпиваю', 'состоятельного мужчину с квартирой', 'самых серьезных отношений')); } Там, где стоит пара символов "%1" будет подставлено значение переменной "sex", вместо "%2" будет значение переменной "horoscope". И так далее.

Новость первая — тип "Counter" — это расширенный тип данных на базе целого числа. Откройте AOT, ветка "Data Dictionary", "Extended Data Types" и найдите этот тип. Его предназначение быть счетчиком. Использовать его или просто создавать целочисленные переменные является делом вкуса.

Новость вторая — внутри метода можно создать так называемую встроенную функцию. У нас это функция AdString(). Подобные конструкции видны только внутри текущего метода (внутри джоба BLG47_Ads). Заметьте также: то, что для джоба является локальной переменной, то для встроенной функции будет глобальной переменной. На примере видно, как AdString() имеет прямой доступ к переменной cnt, объявленной в джобе.

И третье — порядок символов подстановки для глобального метода strfmt() произвольный. В данном примере видно, что подстановка "%6" идет первой, хоть и берет значение последней переменной (переменной cnt).

Итог:

знакомится с девушками лучше в реальности. Однако уж лучше через объявления делать попытки, чем завязывать служебный роман. Служебный роман — это очень, очень нехорошо.

Комментариев нет: