Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Работа с ссылками

Мы уже видели примеры того, как можно использовать ссылки в связке с 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 выведет сообщение об ошибке.