Работа с ссылками
Мы уже видели примеры того, как можно использовать ссылки в связке с Irnix. Сейчас мы более подробно и глубоко разберем тему использования ссылок.
Ссылки помогают переиспользовать код, а также переименовывать сущности.
Например, мы можем представить, что у нас есть некая библиотека объектов Irnix, которая представляет из себя обычную директорию ~/library со скриптами и контрактами. Предположим она выглядит примерно так:
~/library
├── method1
├── method2
├── method3
├── ...
└── methodn
Мы можем создать ссылку на эту директорию в namespace, а также назвать ее как угодно, тем самым выбрав название для нашего объекта:
ln -s ~/library object
~/.local/share/irnix
└── object -> ~/library
После чего мы можем использовать методы из директории ~/library:
irnix e object.method2 -- 'Hello World!'
Таким образом можно эффективно переиспользовать код. Вот еще одни пример: мы можем копировать тело метода путем создания ссылок:
ln method method2
ln -s method method3
~/.local/share/irnix
└── object
├── method
├── method2 -> method
└── method3 -> method
И такие методы можно использовать как обычные, и Irnix вызовет один и тот же файл method:
irnix e object.method
irnix e object.method2
irnix e object.method3
В главе Строгая классификация мы разобрали, какие сущности не считаются объектами или методами. Сейчас мы рассмотрим ряд примеров, которые помогают явно создать из них методы и объекты.
Возьмем в качестве примера некий файл script.sh, что располагается внутри объекта object:
~/.local/share/irnix
└── object
└── script.sh
Такой скрипт напрямую вызвать не выйдет, так как script.sh не считается методом. Но мы можем явно сделать метод, что ссылается на script.sh:
cd ~/.local/share/irnix/object
ln -s script.sh method
~/.local/share/irnix
└── object
├── method -> script.sh
└── script.sh
После для такого метода можно составить контракт а также вызывать, при условии что сам файл script.sh имеет право на исполнение:
irnix e object.method
Возьмем в качестве второго примера стандартный namespace ~/.local/share/irnix и превратим его в объект, путем создания ссылки:
ln -s . self
~/.local/share/irnix
└── self -> .
Теперь self имитирует объект, так как является директорией и при этом не содержит в названии точек. Если добавить метод method, то его можно будет вызвать:
irnix e self.method
~/.local/share/irnix
├── method
└── self -> .
Таким образом мы превращаем namespace в объект self и не оставляем метод method сиротой без объекта. Если попытаться просто вызвать метод (irnix e method), то Irnix выведет сообщение об ошибке.