Модули (en)[править заголовок, править ссылку на оригинал, править текст, править список подразделов, править список разделов] Модуль в m является скриптом (текстовым файлом), который можно загрузить другими скриптами, чтобы получить доступ к функциям и переменным в модуле. Модули служат двум целям:
Чтобы загрузить модуль, требуется пункт use ModuleName1, ModuleName2, ... Это загружает модули Имена модулей не чувствительны к регистру, поскольку они определяются именами файлов в операционной системе. use System // загрузить модуль "system" print System.appdir; // это будет работать print system.appdir // это то же самое Наряду с именем модуля можно использовать псевдоним, чтобы переобозначить модуль, например, аббревиатура длинного имени модуля. Псевдонимы доступны внутри кода, включающего пункт use ModuleName as AliasName В качестве примера рассмотрим следующий модуль S=[]; // инициализация модуля function get(nr) x=accounts.S[nr]; // все счита начинаются с 0 if x=null then x=0 end; return x end function xfer(f, t, x) ..S[f]=get(f)-x; ..S[t]=get(t)+x end Внутри функций перед глобальной переменной Модуль может быть использован следующим образом: // загрузить модуль и назвать его 'acc'.
use accounts as acc
// передать деньши от blue к bank
acc.xfer('blue', 'bank', 100000);
print acc.get('bank')
→ 100000
// передать деньги от bank к Daltons
acc.xfer('bank', 'Daltons', 10000);
print acc.get('bank')
→ 90000
// показать все счета
print acc.S
→ [-100000, 90000, 10000]
Порядок поиска модулей (en)[править заголовок, править ссылку на оригинал, править текст] При встрече пункта
Префиксы модулей (en)[править заголовок, править ссылку на оригинал, править текст] Перед глобальными переменными и функциями обычно должны быть имя модуля, в котором они определены, (или соответствующий псевдоним) и точка. Префиксом для функций и переменных в основном скрипте или встроенных является просто точка, без имени. Внутри модуля перед его глобальными переменными и функциями могут стоять две точки Префикс не всегда требуется, если переменная или функция используется внутри ее содержащего модуля. Более того, функции, объявленные в основном скрипте, или встроенные стандартные функции нуждаются в префиксе только если существует функция с таким же именем в текущем модуле. Следующая таблица обобщает то, как интерпретируются переменные и функции без префикса модуля:
Версия модуля (en)[править заголовок, править ссылку на оригинал, править текст] Шаблон:M Mobile Shell:Reference:Language:Modules:Module Version::текст Необязательные модули (en)[править заголовок, править ссылку на оригинал, править текст] Шаблон:M Mobile Shell:Reference:Language:Modules:Optional Modules::текст
© 2004-2009 airbit AG, CH-8008 Zürich
|
|