>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь

I. Локативы

Локатив abc_f_ ссылается на имя abc в поле имен f; косвенный локатив abc__xy ссылается на abc в поле имен, название которого является текущим значением xy. Для совместимости с предыдущими версиями принимается и нестандартный локатив abc__ , эквивалентный abc_base_. Тоесть:
   b=: 1
   Rome=: 2
   Rome_NewYork_=: 20
   f_NewYork_=: 3 : '3*b=: Rome+y'
   f_NewYork_ 10
90

   b,Rome
1 2

   b_NewYork_
30
Имя является глобальным, если оно не присвоено =. внутри явного определения (:). Любое глобальное имя исполняется в текущем поле имен. В начале, текущим является поле имен base. Локатив f_abc_, во время своего исполнения переключает текущее поле имен на abc. Глагол 18!:4 так же переключает текущее поле имен, а 18!:5 возвращает его название.

Имя f_abc_ выполняется в поле имен abc в том смысле, что любое глобальное имя, на которое происходит ссылка в f , ищется в abc, и, если не найдено, в пути поиска поля имен abc (но выполняется все равно в abc). Путь поиска поля имен, изначально установлен в ,<,'z' , кроме поля z , изначально имеющего пустой путь. Его можно изменить при помощи 18!:2 .

Имена в полях имен обычно создаются сценарием, при помощи соответствующего выбора имени глагола, используемого для его выполнения. Например, если файл stats содержит сценарий:
   mean=: sum % #
   sum=: +/
Тогда:
   ssx_z_=: 0!:10             Выполнение сценария без вывода
              
   ssx_a_ <'stats'            Заполнить поле имен a

   mean=: 'in base locale'
   mean_a_ 3 4 5
4
              
   ssx_bc_ <'stats'           Заполнить поле имен bc
   sum_bc_ 3 4 5
12
Этот пример так же иллюстрирует использование путей поиска имен (состоящего из поля имен z ): Сначала, утилита ssx определяется в z . При выполнении ssx_a_, ssx не обнаруживается в поле имен a и, соответственно, ищется (и находится) в поле имен z. Поскольку ssx_a_ выполняется в поле имен a, имена из сценария stats определяются в поле имен a, наполняя его. Подобное происходит и для ssx_bc_.

См. 18!: в Приложении A, а так же лабораторные “Locales” и “Object Oriented Programming”, распространяемые с системой.



>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь