Просмотр записи: Пост. Размер: 5372 символов. Изменен 20:14:00 04.10.2023
. Меток нет.
upd. 22:30:37 24.10.2024: тут все уже сто раз устарело, но пусть останется на память.
немного об этом простом, но в то же время великом методе (прапорщик, запишите).
он мне не давался с самого начала. я помню, что тогда, когда игра писалась в императивном стиле, приходилось на каждую переменную в функции (где угодно, но не в самой программе) создавать ее глобальную тезку, иначе локализатор просто не видел ее. такова была плата за доступ сразу ко всем переменным в игре.
сейчас игра переписана в объектном стиле. стало намного короче, лаконичнее. может, по производительности и будет некоторое проседание, но как-то пофиг. я что, надеюсь на хайлоад? десятки тысяч одновременных игроков? кроме того, давайте-ка будет ориентироваться на результат. не забываем притчу про васю и петю!
это метод профиля. сделано было так для того, чтобы метод мог спокойно шнырять по данным игрока без явного указания переменных. понятное дело, это практически то же самое, что было раньше (но написано безопаснее и элегантнее), и тому есть вески причины – в каждой второй строке идет упоминание пола игрока. задолбишься прописывать его явно! а еще язык является частью профиля, можно было бы его извлекать и другими способами, но инструкции бы выходили чрезмерно громоздкими (совсем как этот текст).
игра должна выводить технические строки еще до получения первого профиля. в свое время это стало почти неразрешимой проблемой, из-за которой я даже забросил код. как я решил? профилем-пустышкой без игрока, без страны. они еще и в будущем мне пригодятся.
а сейчас я дописал вывод строк по их названию в другой строке. теперь все стало совсем красиво. не нужно никаких заранее просчитанных строк, не нужна Прекрасная триада (эта гигантская дырка в штанах). я просто указываю один лишний аргумент, когда вызываю нужную строку, и вуаля – все готово. строки любой сложности, любой вложенности.
все как я мечтал.
этим же способом можно будет избавиться от многочисленных милорд-миледи. теперь их можно реализовать как вложенную строку.
что умеет этот метод:
- текст в квадратных скобках интерпретируется как переменная из тех, что были переданы в метод say. если переменной нет, вместо нее выводится уведомление об этом прямо в текст. хоть где-то программа не падает от ошибки.
- все квадратные скобки с вертикальной чертой внутри два – это динамические конструкции. текст перед первой чертой – это идентификатор конструкции. черт может быть сколько угодно, они разделяют внутренние аргументы. можно вкладывать сколько угодно конструкций, ну пока стек вызовов не переполнится.
- a – автоматический склонятор в зависимости от заданного числа.
- pg – определитель пола игрока.
- s – тот самый волшебный подстановщик, благодаря которому я, несмотря ни на что.
- t – выводит текущее время. можно подставить ему формат. по сути является оберткой для функции
если же конструкция не подходит под шаблоны выше, об этом будет выведено уведомление.
немного об этом простом, но в то же время великом методе (прапорщик, запишите).
он мне не давался с самого начала. я помню, что тогда, когда игра писалась в императивном стиле, приходилось на каждую переменную в функции (где угодно, но не в самой программе) создавать ее глобальную тезку, иначе локализатор просто не видел ее. такова была плата за доступ сразу ко всем переменным в игре.
сейчас игра переписана в объектном стиле. стало намного короче, лаконичнее. может, по производительности и будет некоторое проседание, но как-то пофиг. я что, надеюсь на хайлоад? десятки тысяч одновременных игроков? кроме того, давайте-ка будет ориентироваться на результат. не забываем притчу про васю и петю!
это метод профиля. сделано было так для того, чтобы метод мог спокойно шнырять по данным игрока без явного указания переменных. понятное дело, это практически то же самое, что было раньше (но написано безопаснее и элегантнее), и тому есть вески причины – в каждой второй строке идет упоминание пола игрока. задолбишься прописывать его явно! а еще язык является частью профиля, можно было бы его извлекать и другими способами, но инструкции бы выходили чрезмерно громоздкими (совсем как этот текст).
игра должна выводить технические строки еще до получения первого профиля. в свое время это стало почти неразрешимой проблемой, из-за которой я даже забросил код. как я решил? профилем-пустышкой без игрока, без страны. они еще и в будущем мне пригодятся.
а сейчас я дописал вывод строк по их названию в другой строке. теперь все стало совсем красиво. не нужно никаких заранее просчитанных строк, не нужна Прекрасная триада (эта гигантская дырка в штанах). я просто указываю один лишний аргумент, когда вызываю нужную строку, и вуаля – все готово. строки любой сложности, любой вложенности.
все как я мечтал.
этим же способом можно будет избавиться от многочисленных милорд-миледи. теперь их можно реализовать как вложенную строку.
что умеет этот метод:
- текст в квадратных скобках интерпретируется как переменная из тех, что были переданы в метод say. если переменной нет, вместо нее выводится уведомление об этом прямо в текст. хоть где-то программа не падает от ошибки.
- все квадратные скобки с вертикальной чертой внутри два – это динамические конструкции. текст перед первой чертой – это идентификатор конструкции. черт может быть сколько угодно, они разделяют внутренние аргументы. можно вкладывать сколько угодно конструкций, ну пока стек вызовов не переполнится.
- a – автоматический склонятор в зависимости от заданного числа.
- pg – определитель пола игрока.
- s – тот самый волшебный подстановщик, благодаря которому я, несмотря ни на что.
- t – выводит текущее время. можно подставить ему формат. по сути является оберткой для функции
strftime
.если же конструкция не подходит под шаблоны выше, об этом будет выведено уведомление.