LINUX.ORG.RU

Сообщения digics

 

анекдот для awkеров :)

я могу объяснить чем я настолько удивлён. Дело в том, что возможности namespace появились относительно недавно. Если не ошибаюсь они пришли вместе с gawk 5+. тогда каким образом могут возникнуть конфликты имён если речь не идёт о совместимости с некоторым старым кодом который пользователь начнёт запускать на gawk 5+ ? старый код будет работать в основном пространстве имён как и должен, а если речь идёт о новом коде который юзер написал уже после появления namespace – то каким образом ему придёт в голову называть какие-то функции именами которые давным давно уже часть языка? Какая может быть причина давать пользователя возможность объявлять такие функции в отдельном namespace?

Чем patsplit хуже чем split?

Тем что он появился позже? Но он появился раньше чем возможности namespace -как и Typeof() тогда почему я не понимаю

с Объясните мне каким образом с именами пользователя могут возникнуть конфликты если написание в определённом пространстве имён

здравствуйте! я давно пишу (gawk) и нахожусь так далеко впереди разработчиков gawk что можно наверное сказать что я нахожусь в другой галактике от них. however - иногда мы общаемся. то багу зарепорчу, то вопрос какой задаю им в гугл-группе. и вот тут произошла ситуация которую можно трактовать как внутренний анекдот awk))) его способны понять только те кто в теме)) слыхали о таком воощбе? ну так слушайте я постараюсь кратко это изложить…

речь о фиче @namespace которая недавно появилась в gawk и о том что блин - круто! но блин к базовым каким-то функциям нет доступа и приходится каждый раз добавлять префикс `awk::’ при каждом обращении к ним в коде. И я говорю о функциях нужных чисто с точки зрения самой техники программирования на высоком уровне

например:

func _a( a,b,c,d ) { return a }

func _b( a,b,c,d ) { return b }

func _print( t ) {

print t :}

func errno( p ) {

return ERRNO }

if ( errno( t = readfile( f ) ) ) …

итд

я склонял dev к тому чтобы они сделали новую директиву @public которая делает имена суперглобальными - видимыми везде, но они неожиданно пошли в ту степь чтобы вместо этого делать инклуды из самих namespaceов просто объявляя внутри него все те-же самые функции такого типа. Ну и вот произошёл вот такой примерно краткий диалог

я: а когда файл @includится у него изначально namespace какой – глобальный ( т.е. Awk ) или тот из которого он инклудится? я вижу что он всегда awk. Может быть тут надо что-то исправить или дополнить? Dev: ??? я: … ну допустим include сохраняет текущий namespace… что тогда. Мы можем из каждой библиотеки инклудить стандартные функции для библиотек. Верно? Ааа блин. Нихрена. Не получится. Файл включается в код только один раз… но постойте-ка! А что если я добавлю пробел в конец имени включаемого файла? Ну-ка.. ну-ка… ооо! Это работает! Гип-г..пля :( а сколько пробелов-то писать? Хммм… наверное… да. Каждая библиотека должна иметь своё собственное количество пробелов которые она добавляет в конец имени включаемого файла :))) dev: если пробел в имени включаемого файла у вас что-то меняет то у вас сторонний энвайримент

и кстати так и было)) чё то ржу немогу остановиться))

Денис

Перемещено Dimez из linux-org-ru

 

digics
()

RSS подписка на новые темы