, предписывающий браузеру отображать текущее состояние установки и указывающий функциюWMLScript, которую должен вызывать браузер при изменении определенной установки в доме.
Рассмотрение приложения CurrencyScript
Отображение суммы денег, пересчитанной в другие валюты Рисунок 21.3. Отображение суммы денег, пересчитанной в другие валюты
Приглашение на выбор вида валюты из приводимого списка Рисунок 21.1. Приглашение на выбор вида валюты из приводимого списка
Приглашение пользователю на ввод суммы денег в указанной валюте Рисунок 21.2. Приглашение пользователю на ввод суммы денег в указанной валюте
Рассмотрение файла сценария CurrencyScriptl .wmls Рассмотрение файла сценария CurrencyScriptl .wmls
Как уже упоминалось ранее, при первоначальном запуске приложения вызывается функция Initialize (Инициализация), находящаяся в файлеCurrencyScriptl.wmls. Позже, когда пользователь выбирает тип валюты, приложение вызывает вторую функцию из WMLScript-файла, которая выводит приглашение пользователю на ввод суммы денег, пересчитываемой затем приложениемв другие валюты. В настоящее время WMLScript-код необходимо размещать в отдельном файле и предварять имя каждой функции ключевым словом extern.Сценарий CurrencyScriptl .wmls реализуется с помощью следующего программного кода:
extern function Initialize()
{
var EuroToDollar = "1.02982"; var PoundToDollar = "1.64649"; var YenToDollar = "0.00947277";
WMLBrowser.setVar("EuroToDollar", EuroToDollar); WMLBrowser.setVar("PoundToDollar", PoundToDollar); WMLBrowser.setVar("YenToDollar", YenToDollar);
var USDollar = 100.00; var Euro = USDollar / Lang.parseFloat(EuroToDollar); var UKPound = USDollar / Lang.parseFloat(PoundToDollar); var JapanYen = USDollar / Lang.parseFloat(YenToDollar);
USDollar = String.format("%3.2f", USDollar); Euro = String.format("%3.2f", Euro); UKPound = String.format("%3.2f", UKPound); JapanYen = String.format("%3.2f", JapanYen);
WMLBrowser.setVar("USDollar", USDollar); WMLBrowser.setVar("Euro", Euro); WMLBrowser.setVar("UKPound", UKPound); WMLBrowser.setVar("JapanYen", JapanYen);
WMLBrowser.refresh();
}
extern function GetUSDollar()
{
var EuroToDollar = WMLBrowser.getVar("EuroToDollar"); var PoundToDollar = WMLBrowser.getVar("PoundToDollar"); var YenToDollar = WMLBrowser.getVar("YenToDollar");
var USDollar = WMLBrowser.getVar("USDollar"); USDollar = Dialogs.prompt("US Dollars", USDollar);
var Euro = Lang.parseFloat(USDollar) / Lang.parseFloat (EuroToDollar); var UKPound = Lang.parseFloat(USDollar) / Lang.parseFloat (PoundToDollar); var JapanYen = Lang.parseFloat(USDollar) / Lang.parseFloat (YenToDollar);
USDollar = String.format("%3.2f", Lang.parseFloat(USDollar)); Euro = String.format("%3.2f", Euro); UKPound = String.format("%3.2f", UKPound); JapanYen = String.format("%3.2f", JapanYen);
WMLBrowser.setVar("USDollar", USDollar); WMLBrowser.setVar("Euro", Euro); WMLBrowser.setVar("UKPound", UKPound); WMLBrowser.setVar("JapanYen", JapanYen);
WMLBrowser.refresh();
}
extern function GetEuro()
{
var EuroToDollar = WMLBrowser.getVar("EuroToDollar"); var PoundToDollar = WMLBrowser.getVar("PoundToDollar"); var YenToDollar = WMLBrowser.getVar("YenToDollar");
var Euro = WMLBrowser.getVar("Euro"); Euro = Dialogs.prompt("Euro", Euro);
var USDollar = Lang.parseFloat(Euro) * Lang.parseFloat (EuroToDollar); var UKPound = USDollar / Lang.parseFloat(PoundToDollar); var JapanYen = USDollar / Lang.parseFloat(YenToDollar);
USDollar = String.format("%3.2f", USDollar); Euro = String.format("%3.2f", Lang.parseFloat(Euro)); UKPound = String.format("%3.2f", UKPound); JapanYen = String.format("%3.2f", JapanYen);
WMLBrowser.setVar("USDollar", USDollar); WMLBrowser.setVar("Euro", Euro); WMLBrowser.setVar("UKPound", UKPound); WMLBrowser.setVar("JapanYen", JapanYen);
WMLBrowser.refresh();
}
Внутри функции Initialize каждому типу валюты присваивается значение коэффициента пересчета. В реальном приложении, сценарий получал бы текущиекурсы валют из базы данных. После того как функция присвоила коэффициентыпересчета своим переменным, программа должна с помощью функцииWMLBrowser. setVar сделать значения переменных видимыми за пределамифункции (другими словами, в результате этой операции значения переменныхстановятся видимыми для программного кода WML-страницы). Затем функцияInitialize форматирует коэффициенты пересчета валют для отображения втаблице, вызывая для этого функцию String.
format.
Как упоминалось ранее, всякий раз, когда пользователь выбирает тип валюты,приложение вызывает соответствующую выбранной валюте функцию, котораявыполняет пересчет в другие валюты. Например, если пользователь выбираетевро (Euro), приложение вызывает функцию GetEuro, которая, в свою очередь,активизирует функцию Dialogs. prompt, чтобы принять вводимые пользователем данные. Затем программа выполняет пересчет, присваивает результаты переменным, которые приложение отображает в таблице. Активизируя функциюWMLBrowser. refresh, приложение отдает браузеру команду обновить информацию на экране сотового телефона.
Как обсуждалось выше, из-за ограничений, накладываемых WML-браузерами наразмер WML-страницы, приложение разбивает сценарий на два файла. Например, сценарий CurrencyScript2.wmls реализуется с помощью следующего программного кода:
extern function GetUKPound()
{
var EuroToDollar = WMLBrowser.getVar("EuroToDollar"); var PoundToDollar = WMLBrowser.getVar("PoundToDollar"); var YenToDollar = WMLBrowser.getVar("YenToDollar");
var UKPound = WMLBrowser.getVar("UKPound"); UKPound = Dialogs.prompt("UK Pounds", UKPound);
var USDollar = Lang.parseFloat(UKPound) * Lang.parseFloat (PoundToDollar); var Euro = USDollar / Lang.parseFloat(EuroToDollar); var JapanYen = USDollar / Lang.parseFloat(YenToDollar);
USDollar = String.format("%3.2f", USDollar); Euro = String.format("%3.2f", Euro); UKPound = String.format("%3.2f", Lang.parseFloat(UKPound)); JapanYen = String.format("%3.2f", JapanYen);
WMLBrowser.setVar("USDollar", USDollar); WMLBrowser.setVar("Euro", Euro); WMLBrowser.setVar("UKPound", UKPound); WMLBrowser.setVar("JapanYen", JapanYen);
WMLBrowser.refresh();
}
extern function GetJapanYen()
{
var EuroToDollar = WMLBrowser.getVar("EuroToDollar"); var PoundToDollar = WMLBrowser.getVar("PoundToDollar"); var YenToDollar = WMLBrowser.getVar("YenToDollar");
var JapanYen = WMLBrowser.getVar("JapanYen"); JapanYen = Dialogs.prompt("Japan Yen", JapanYen);
var USDollar = Lang.parseFloat(JapanYen) * Lang.parseFloat (YenToDollar); var UKPound = USDollar / Lang.parseFloat(PoundToDollar); var Euro = USDollar / Lang.parseFloat(EuroToDollar);
USDollar = String.format("%3.2f", USDollar); Euro = String.format("%3.2f", Euro); UKPound = String.format("%3.2f", UKPound); JapanYen = String.format("%3.2f", Lang.parseFloat(JapanYen));
WMLBrowser.setVar("USDollar", USDollar); WMLBrowser.setVar("Euro", Euro); WMLBrowser.setVar("UKPound", UKPound); WMLBrowser.setVar("JapanYen", JapanYen);
WMLBrowser.refresh();
}
Дополнительную информацию по операторам и функциям WMLScriptможно найти в Приложении С, "Справочник по WMLScript".
Рассмотрение приложения CurrencyScript.wml Рассмотрение приложения CurrencyScript.wml
При запуске приложения Currency Script браузер загружает WML-страницу, содержащуюся в файле CurrencyScript.wml, которая вначале инициализирует курсы пересчета валют. Если вы просмотрите WML-страницу, то обнаружите, что в нейимеется много ссылок, подобных приводимой ниже. Эта ссылка активизируетфункцию, находящуюся в отдельном WMLScript-файле:
В данном случае элемент отдает браузеру команду выполнить ветвление и перейти к функции Initialize (Инициализация), находящейся в файлеCurrencyScriptI .wmls. После того как функция выполнит обработку, для которойона предназначена, управление возвращается в текущее место программного кода. Как вы увидите, функция Initialize присваивает значения курсов пересчетафунтов, йен и евро в доллары.
По мере знакомства с WML-страницей вы также встретите ряд элементов, примеркоторых приводится ниже. Здесь элемент ссылается на значение хранимое в переменной:
US
Dollars :
$USDollar
В данном случае программный код ссылается на переменную USDollar, котораясодержит результат последнего преобразования в доллары США. ПриложениеCurrencyScript.wml реализуется с помощью следующего программного кода:
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>
</head>
<card id="CurrencyScript">
<onevent type="onenterforward">
<go href="CurrencyScript1.wmls#Initialize()" />
</onevent>
<p align="center">
Currency Converter
</p>
<p align="left" mode="nowrap">
<table align="left" columns="2">
<tr> <td><a href="CurrencyScript1.wmls #GetUSDollar()" title="Edit">US Dollars:</a></td> <td>$USDollar</td> </tr>
<tr> <td><a href="CurrencyScript1.wmls #GetEuro()" title="Edit">Euro:</a></td> <td>$Euro</td> </tr>
<tr> <td><a href="CurrencyScript2.wmls #GetUKPound()" title="Edit">UK Pounds:</a></td> <td>$UKPound</td> </tr>
<tr> <td><a href="CurrencyScript2.wmls #GetJapanYen()" title="Edit">Japan Yen:</a></td> <td>$JapanYen</td> </tr>
</table>
</p>
</card>
</wml>
Как и во всех WML-страницах, первые два элемента рассматриваемой WML-страницы сообщают WAP-браузерам (а также программистам) версию WAP-спецификации поддерживаемой приложением. В данном случае WML-страницасовместима с XML 1.0 и описанием типа документа (DTD) версии 1.1, разработанным ассоциацией WAP Forum
Любая WML-страница, размещаемая после информации о версии, начинается стега . В конце каждой WML-страницы должен находиться соответствующийтег , который завершает элементы WML-страницы, Теги
и ,располагающиеся после тега , позволяют указывать данные о WML-странице, включая метаданные и информацию управляющую доступом. Многиепрограммисты рассматривают метаданные как "данные о данных". Другими словами, метаданные в нашем примере, считываемые и обрабатываемые браузером,сообщают браузеру, что надо делать с данными карт.
Элемент позволяет определять для WML- страницы метаинформацию. Внашем случае параметр http-equiv=Cache-Control сообщает WAP-браузеру, чтоданная часть метаинформации относится к системе кэширования памяти. Аналогично, параметр content=max-age=0 сообщает браузеру, что максимальное время, в течение которого должно выполняться кэширование WML-страницы, равнорулю секунд; то есть, браузер должен не запоминать, а повторно загружать данные с сервера каждый раз, когда поступает запрос. Для данной книги нулевоезначение было выбрано, чтобы помочь читателю в разработке программы. Привыборе нулевого значения каждый раз, когда происходит изменение, это изменение передается на телефон. В реально эксплуатируемом приложении статическое меню, подобное рассматриваемому здесь, по-видимому, должно использовать интервал хранения, установленный по умолчанию, равным 30 дням. Наконец, параметр forua="true" определяет, что данное значение Cache-Controlпредназначено для телефона и не должно удаляться каким-либо промежуточнымагентом.
Затем приложение создает таблицу, элементы которой указывают на функции вWMLScript-файлах. Так как многие WML-браузеры накладывают ограничение намаксимальный размер WML-страницы, приложение размещает функции в двухотдельных файлах. В частности, функции выводят приглашение на ввод суммыденег в долларах, фунтах, йенах или евро. Затем, основываясь на введенныхпользователем данных, WMLScript преобразует указанную сумму денег в другиевалюты и присваивает полученные результаты переменным $USDollar, $Euro,$UKPound и $ JapanYen, которые потом приложение отображает в таблице.
Рассмотрение приложения MortgageScript
Отображение рассчитаннойсуммы платежа по закладной Рисунок 22.2. Отображение рассчитаннойсуммы платежа по закладной
Приглашение пользователюна ввод данных по закладной Рисунок 22.1. Приглашение пользователюна ввод данных по закладной
Рассмотрение файла сценария MortgageScript.wmls Рассмотрение файла сценария MortgageScript.wmls
Как обсуждалось выше, основная часть обработки данных, выполняемой приложением MortgageScript, реализуется с помощью функций, находящихся вWMLScript-файле. Например, когда пользователь вводит данные для некоторогоконкретного поля, такого, как процентная ставка, приложение активизирует всценарии функцию, которая выводит приглашение пользователю на ввод данных. Сценарий MortgageCaJe.wmls реализуется с помощью следующего программного кода:
extern function GetPrincipal()
{
var Principal = WMLBrowser.getVar("Principal"); Principal = Dialogs.prompt("Enter Principal: $", Principal);
WMLBrowser.setVar("Principal", Principal);
}
extern function GetInterest()
{
var Interest = WMLBrowser.getVar("Interest"); Interest = Dialogs.prompt("Enter Interest %", Interest);
WMLBrowser.setVar("Interest", Interest);
}
extern function GetYears()
{
var Years = WMLBrowser.getVar("Years"); Years = Dialogs.prompt("Enter Years", Years);
WMLBrowser.setVar("Years", Years);
}
extern function CalcPayments()
{
var Principal = WMLBrowser.getVar("Principal"); var Interest = WMLBrowser.getVar("Interest"); var Years = WMLBrowser.getVar("Years");
var MonthInt = (Lang.parseFloat(Interest) / 12) / 100;
var Months = Lang.parseInt(Years) * 12;
var Payment = Lang.parseInt(Principal) * (MonthInt / (1 - (Float.pow((1 + MonthInt), -Months)))); Payment = String.format("%6.2f", Payment);
WMLBrowser.setVar("Payment", Payment); WMLBrowser.go("MortgageScript.wml#MortgageCalc");
}
}
Как вы уже знаете, в настоящее время WMLScript-код необходимо размещать в отдельном файле и предварять имя каждой функции ключевым словом extern. Каждая из функций GetPrincipal, Getlnterest и GetYears выполняет сходную обработку. Они выделяют переменную для хранения значения, вызывают функциюString. dialog для отображения приглашения пользователю на ввод данногозначения, затем активизируют функцию WMLBrowser.setVar, чтобы сделать переменную видимой для всего программного кода приложения.
Для расчета закладной функция CalcPayments вызывает функцию WMLBrowser.getVar, чтобы получить значения для переменных Principal,Interest и Years. Затем программа преобразует ежегодный процент по кредиту(в формате 7.75) в ежемесячный процент. Процентная ставка в результате деления на 100 переводится в десятичный формат (0.0775). Далее программа рассчитывает платеж по закладной, форматирует полученную сумму для вывода и использует функцию WMLBrowser. setvar, чтобы сделать переменную платежа видимой для всего программного кода приложения. Так как приложение вызываетфункцию CalcPayments посредством элемента <до>, а не с помощью элемента<а>, то для возврата в основное приложение, в программном коде необходимоиспользовать функцию WMLBrowser. go.
Рассмотрение приложения MortgageScript.wml Рассмотрение приложения MortgageScript.wml
При запуске приложения MortgageScript, WML-страница MortgageScript.wml выводит на экран приглашение пользователю на ввод основной суммы кредита, процентной ставки и количества лет. Внутри WML-страницы приложение реализуеткаждое поле ввода в виде ссылки на функцию, находящуюся в WMLScript-файле.Когда пользователь выбирает какую-либо ссылку, приложение вызывает функцию, которая, в свою очередь, выводит приглашение пользователю на ввод соответствующих данных.
После ввода пользователем данных и выбора кнопки Calc (Расчет) приложениеактивизирует находящуюся в WMLScript-файле функцию CalcPayments, котораявыполняет расчет и выводит на экран сумму закладной. WML-страницаMortgageCalc.wml реализуется с помощью следующего программного кода:
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>
</head>
<card id="MortgageCalc">
<do type="accept" label="Edit"> <noop /> </do>
<do type="options" label="Calc"> <go href="MortgageScript.wmls#CalcPayments()" /> </do>
<p align="center">
Mortgage Calculator<br/>
</p>
<p align="left" mode="nowrap">
<a href="MortgageScript.wmls#GetPrincipal()" title="Edit">Principal: $$$(Principal)</a> <a href="MortgageScript.wmls#GetInterest()" title="Edit">Interest(%): $(Interest)</a> <a href="MortgageScript.wmls#GetYears()" title="Edit">Years: $(Years)</a><br/> Payment: $$$(Payment)
</p>
</card>
</wml>
Первые два элемента WML-страницы сообщают WAP-браузерам версию WAP-спецификации, которую поддерживает приложение. В данном случае WML-страница совместима с XML 1.0 и описанием типа документа (DTD) версии 1.1, разработанным ассоциацией WAP Forum. Любая WML-страница, размещаемаяпосле информации о версии, начинается с тега . В конце каждой WML-страницы должен находиться соответствующий тег , который завершаетэлементы WML-страницы. Теги
и НЕМ", располагающиеся после тега, позволяют указывать данные о WML-странице, включая метаданные и информацию, управляющую доступом.
Элемент позволяет определять для WML-страницы метаинформацию. В нашем случае параметр http-equiv=Cache-Control сообщает WAP-браузеру, что данная часть метаинформации относится к системе кэширования памяти. Аналогично, параметр content=max-age=0 сообщает браузеру, что максимальное время, втечение которого должно выполняться кэширование WML-страницы, равно нулюсекунд; то есть, браузер должен не запоминать, а повторно загружать данные с сервера каждый раз, когда поступает запрос. Для данной книги нулевое значение быловыбрано, чтобы помочь читателю в разработке программы. При выборе нулевогозначения каждый раз, когда происходит изменение, это изменение передается нателефон. В реально эксплуатируемом приложении статическое меню, подобноерассматриваемому здесь, по-видимому, должно использовать интервал хранения,установленный по умолчанию, равным 30 дням. Наконец, параметр forua="true"определяет, что данное значение Cache-Control предназначено для телефонами недолжно удаляться каким-либо промежуточным агентом.
Обработка, выполняемая WML-страницей, на самом деле достаточно прямолинейна - большая часть работы реализуется программным кодом на WMLScript. Если вы просмотрите WML-страницу, то обнаружите, что в ней имеется много ссылок, подобных приводимой ниже. Эта ссылка активизирует функцию, находящуюся в отдельном WMLScript-файле:
В данном случае элемент отдает браузеру команду выполнить ветвление и перейти к функции CalcPayments, находящейся в файле MortgageScript.wmls. После того как функция выполнит обработку, для которой она предназначена, управлениевозвращается в текущее место программного кода. Как уже упоминалось ранее,функция CalcPayments рассчитывает и отображает сумму закладной.
Рассмотрение приложения blotMachme
Отображение результата "вращения барабанов" игорного автомата Рисунок 23.2. Отображение результата "вращения барабанов" игорного автомата
Приглашение пользователю на "вращение барабанов" игорного автомата Рисунок 23.1. Приглашение пользователю на "вращение барабанов" игорного автомата
Рассмотрение приложения blotMachme Рассмотрение приложения blotMachme
При запуске приложения SlotMachine WML-страница SlotMachine.wml выводит наэкран приглашение пользователю начать игру. Чтобы реализовать игорный автомат, приложение задействует переменные, которые соответствуют трем рядампо три колонки. Для ссылки на переменные в программном коде используютсяимена rlcl, rlc2, rlc3 и так далее. Вывод на экран значений переменных выполняется в виде таблицы размером три на три. WML-страница SlotMachine.wml реализуется с помощью следующего программного кода:
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>
</head>
<card id="SlotMachine">
<onevent type="ontimer">
<go href="#Init" />
</onevent>
<timer name="InitTime" value="600" />
<p align="center" mode="nowrap">
Slot Machine<br/>
<table align="center" columns="5">
<tr>
<td></td> <td><img alt="" src="" localsrc= "minus" /></td> <td><img alt="" src="" localsrc= "minus" /></td> <td><img alt="" src="" localsrc= "minus" /></td> <td> </td>
</tr>
<tr>
<td>=</td> <td><img alt="" src="" localsrc= "minus" /></td> <td><img alt="" src="" localsrc= "minus" /></td> <td><img alt="" src="" localsrc= "minus" /></td> <td>=</td>
</tr>
<tr>
<td> </td> <td><img alt="" src="" localsrc= "minus" /></td> <td><img alt="" src="" localsrc= "minus" /></td> <td><img alt="" src="" localsrc= "minus" /></td> <td> </td>
</tr>
</table>
<do type="accept" label="Start">
<go href="#Init" />
</do>
</p>
</card>
<card id="Init">
<onevent type="onenterforward">
<refresh>
<setvar name="r1c1" value="minus" /> <setvar name="r1c2" value="minus" /> <setvar name="r1c3" value="minus" />
<setvar name="r2c1" value="dollarsign" /> <setvar name="r2c2" value="dollarsign" /> <setvar name="r2c3" value="dollarsign" />
<setvar name="r3c1" value="minus" /> <setvar name="r3c2" value="minus" /> <setvar name="r3c3" value="minus" />
<setvar name="cash" value="100" />
<setvar name="LoopCounter" value="0" />
<setvar name="SpinTime" value="1" />
</refresh>
</onevent>
<p align="center" mode="nowrap">
Slot Machine<br/>
<table align="center" columns="5">
<tr>
<td> </td> <td><img alt="" src="" localsrc= "$(r1c1)" /></td> <td><img alt="" src="" localsrc= "$(r1c2)" /></td> <td><img alt="" src="" localsrc= "$(r1c3)" /></td> <td> </td>
</tr>
<tr>
<td>=</td> <td><img alt="" src="" localsrc= "$(r2c1)" /></td> <td><img alt="" src="" localsrc= "$(r2c2)" /></td> <td><img alt="" src="" localsrc= "$(r2c3)" /></td> <td>=</td>
</tr>
<tr>
<td> </td> <td><img alt="" src="" localsrc= "$(r3c1)" /></td> <td><img alt="" src="" localsrc= "$(r3c2)" /></td> <td><img alt="" src="" localsrc= "$(r3c3)" /></td> <td> </td>
</tr>
</table>
$$$(cash)
<do type="accept" label="Spin">
<go href="SlotMachineSpin.wml" />
</do>
</p>
</card>
</wml>
Первые два элемента WML-страницы сообщают WAP-браузерам версию WAP-спецификации, которую поддерживает приложение. В данном случае WML-страница совместима с XML 1.0 и описанием типа документа (DTD) версии 1.1, разработанным ассоциацией WAP Forum. Любая WML-страница, размещаемаяпосле информации о версии, начинается с тега . В конце каждой WML-страницы должен находиться соответствующий тег , который завершаетэлементы WML-страницы. Теги
и , располагающиеся после тега, позволяют указывать данные о WML-странице, включая метаданные и информацию управляющую доступом
Элемент позволяет определять для WML-страницы метаинформацию. Внашем случае параметр http~equiv=Cache-Control сообщает WAP-браузеру, чтоданная часть метаинформации относится к системе кэширования памяти.
Аналогично, параметр content=max-age= o сообщает браузеру, что максимальное время, в течение которого должно выполняться кэширование WML-страницы, равнонулю секунд; то есть, браузер должен не запоминать, а повторно загружать данные с сервера каждый раз, когда поступает запрос. Для данной книги нулевоезначение было выбрано, чтобы помочь читателю в разработке программы. Привыборе нулевого значения каждый раз, когда происходит изменение, это изменение передается на телефон. В реально эксплуатируемом приложении статическое меню, подобное рассматриваемому здесь, по-видимому, должно использовать интервал хранения, установленный по умолчанию, равным 30 дням. Наконец, параметр forua="true" определяет, что данное значение Cache-Controlпредназначено для телефона и не должно удаляться каким-либо промежуточнымагентом.
При запуске приложения выполняется ветвление программного кода и переходна локальную карту Init, которая присваивает символам верхнего и нижнего ряда знаки минуса, а символам среднего ряда - знаки доллара. Кроме того, для отображения в таблице пиктограмм, таких как бубны и черви, карта Init используетв элементе опцию localsrc. С помощью опции localsrc приложение получает пиктограммы из ПЗУ телефона.
Когда пользователь выбирает кнопку Spin (Вращение), приложение вызываетWML-страницу SlotMachineSpin.wml, со следующим программным кодом:
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>
</head>
<card id="Spin">
<onevent type="ontimer">
<go href="SlotMachine.wmls#Spin()" />
</onevent>
<timer name="SpinTime" value="1" />
<p align="center" mode="nowrap">
Slot Machine<br/>
<table align="center" columns="5">
<tr>
<td> </td> <td><img alt="" src="" localsrc= "$(r1c1)" /></td> <td><img alt="" src="" localsrc= "$(r1c2)" /></td> <td><img alt="" src="" localsrc= "$(r1c3)" /></td> <td> </td>
</tr>
<tr>
<td>=</td> <td><img alt="" src="" localsrc= "$(r2c1)" /></td> <td><img alt="" src="" localsrc= "$(r2c2)" /></td> <td><img alt="" src="" localsrc= "$(r2c3)" /></td> <td>=</td>
</tr>
<tr>
<td> </td> <td><img alt="" src="" localsrc= "$(r3c1)" /></td> <td><img alt="" src="" localsrc= "$(r3c2)" /></td> <td><img alt="" src="" localsrc= "$(r3c3)" /></td> <td> </td>
</tr>
</table>
$$$(cash)
</p>
</card>
</wml>
Чтобы выполнить операцию "вращения барабанов" игорного автомата, WML- страница использует таймер, который заставляет приложение делать паузу в долю секунды между вызовами функции Spin. Каждый раз, когда срабатывает таймер, WML-страница вызывает функцию Spin, находящуюся в файлеSlotMachine.wmls в виде программного кода WMLScript. Для определения значенийпеременных rlcl, rlc2 и так далее, функция Spin использует случайные числа.После завершения функцией обработки, для которой она предназначена, WML-страница выводит на экран новые установки.
Рассмотрение сценария SlotMachine.wmls > Рассмотрение сценария SlotMachine.wmls >
Когда пользователь выбирает кнопку Spin (Вращение), приложение SlotMachineвызывает функцию Spin, находящуюся в файле сценария SlotMachine.wmls. Функция Spin, в свою очередь, выполняет обработку, обеспечивающую перемещениеэлементов во время "вращения барабанов". Для моделирования вращающихсябарабанов игорного автомата, приложение использует цикл, в котором текущеесодержимое экрана вращается без отображения, а вращение девяти новых случайных символов выводится на экран. После завершения "вращения барабанов"игорного автомата, WML-страница вызывает функцию WinCash, находящуюся вовтором WMLScript-файле, имя которого SlotMachine2.wmls. СценарийSlotMachine.wmls реализуется с помощью следующего программного кода:
use url SlotMachine2 "SlotMachine2.wmls";
extern function Spin()
{
var Loop = WMLBrowser.getVar("LoopCounter");
if (Loop == 0)
{ Loop = 1;
var cash = WMLBrowser.getVar("cash"); cash = Lang.parseInt(cash); cash -= 10; cash = String.format("%1.1d", cash); WMLBrowser.setVar("cash", cash);
var Dummy = Lang.seed("InitTime");
WMLBrowser.setVar("r1c1", "blankhalf"); WMLBrowser.setVar("r1c2", "blankhalf"); WMLBrowser.setVar("r1c3", "blankhalf");
WMLBrowser.setVar("r2c1", "blankhalf"); WMLBrowser.setVar("r2c2", "blankhalf"); WMLBrowser.setVar("r2c3", "blankhalf");
WMLBrowser.setVar("r3c1", "blankhalf"); WMLBrowser.setVar("r3c2", "blankhalf"); WMLBrowser.setVar("r3c3", "blankhalf");
WMLBrowser.setVar("SpinTime", 3);
}
else if (Loop == 1)
{ Loop = 2;
WMLBrowser.setVar("r1c1", SlotMachine2#GetSymbol()); WMLBrowser.setVar("r1c2", SlotMachine2#GetSymbol()); WMLBrowser.setVar("r1c3", SlotMachine2#GetSymbol());
WMLBrowser.setVar("SpinTime", 3); }
else if (Loop == 2)
{ Loop = 3;
WMLBrowser.setVar("r2c1", WMLBrowser.getVar("r1c1")); WMLBrowser.setVar("r2c2", WMLBrowser.getVar("r1c2")); WMLBrowser.setVar("r2c3", WMLBrowser.getVar("r1c3"));
WMLBrowser.setVar("r1c1", SlotMachine2#GetSymbol()); WMLBrowser.setVar("r1c2", SlotMachine2#GetSymbol()); WMLBrowser.setVar("r1c3", SlotMachine2#GetSymbol());
WMLBrowser.setVar("SpinTime", 3);
}
else if (Loop == 3)
{ Loop = 4;
WMLBrowser.setVar("r3c1", WMLBrowser.getVar("r2c1")); WMLBrowser.setVar("r3c2", WMLBrowser.getVar("r2c2")); WMLBrowser.setVar("r3c3", WMLBrowser.getVar("r2c3"));
WMLBrowser.setVar("r2c1", WMLBrowser.getVar("r1c1")); WMLBrowser.setVar("r2c2", WMLBrowser.getVar("r1c2")); WMLBrowser.setVar("r2c3", WMLBrowser.getVar("r1c3"));
WMLBrowser.setVar("r1c1", SlotMachine2#GetSymbol()); WMLBrowser.setVar("r1c2", SlotMachine2#GetSymbol()); WMLBrowser.setVar("r1c3", SlotMachine2#GetSymbol());
WMLBrowser.setVar("SpinTime", 3);
}
else if (Loop == 4)
{ Loop = 5;
WMLBrowser.setVar("r3c1", WMLBrowser.getVar("r2c1")); WMLBrowser.setVar("r3c2", WMLBrowser.getVar("r2c2")); WMLBrowser.setVar("r3c3", WMLBrowser.getVar("r2c3"));
WMLBrowser.setVar("r2c1", WMLBrowser.getVar("r1c1")); WMLBrowser.setVar("r2c2", WMLBrowser.getVar("r1c2")); WMLBrowser.setVar("r2c3", WMLBrowser.getVar("r1c3"));
WMLBrowser.setVar("r1c1", SlotMachine2#GetSymbol()); WMLBrowser.setVar("r1c2", SlotMachine2#GetSymbol()); WMLBrowser.setVar("r1c3", SlotMachine2#GetSymbol());
WMLBrowser.setVar("SpinTime", 3);
}
else if (Loop == 5)
{ Loop = 6;
WMLBrowser.setVar("r3c1", WMLBrowser.getVar("r2c1")); WMLBrowser.setVar("r3c2", WMLBrowser.getVar("r2c2")); WMLBrowser.setVar("r3c3", WMLBrowser.getVar("r2c3"));
WMLBrowser.setVar("r2c1", WMLBrowser.getVar("r1c1")); WMLBrowser.setVar("r2c2", WMLBrowser.getVar("r1c2")); WMLBrowser.setVar("r2c3", WMLBrowser.getVar("r1c3"));
WMLBrowser.setVar("r1c1", SlotMachine2#GetSymbol()); WMLBrowser.setVar("r1c2", SlotMachine2#GetSymbol()); WMLBrowser.setVar("r1c3", SlotMachine2#GetSymbol());
WMLBrowser.setVar("SpinTime", 1);
}
else if (Loop == 6)
{
SlotMachine2#WinCash();
}
WMLBrowser.setVar("LoopCounter", Loop);
WMLBrowser.refresh(); }
Как вы уже знаете, в настоящее время WMLScript- код необходимо размещать вотдельном файле, отличном от файла страницы WML-карт и предварять имякаждой функции ключевым словом extern. Первая строка сценария сообщаетбраузеру о том, что сценарий использует функции, находящиеся в WMLScript-файле SlotMachine2.wmls. Затем программа вызывает функцию WMLBrowsr. getVarдля выборки значения глобальной переменной LoopCounter, используемойсценарием для подсчета количества "вращений барабанов" игорного автомата.Далее программный код содержит серию ветвлений if-else, которыевыполняют обработку, характерную для текущего цикла. Например, в первомцикле должно выполняться вращение только одного набора символов, тогда какво втором цикле должно выполняться вращение двух наборов и так далее.
Для выборки и присвоения переменным символов приложение активизируетфункции WMLBrowser. getVar и WMLBrowser. setVar. Чтобы извлечь новые символы, сценарий вызывает функцию GetSymbol, находящуюся в файлеSlotMachine2.wmls. Для получения символа функция GetSymbol использует генератор случайных чисел.
В начале каждого цикла таймеру присваивается значение SpinTime. Это значениезаменяет используемую по умолчанию величину, которая определяется в элементе из файла SlotMachineSpin.wml. В данном случае с помощью переменной SpinTime устанавливается задержка в 0.3 секунды.
extern function GetSymbol()
{
var temp = Lang.random(10);
if (temp < 4) return "blankhalf"; else if (temp < 7) return "heart"; else if (temp < 9) return "gem"; else return "dollarsign";
}
extern function WinCash()
{
var cash = WMLBrowser.getVar("cash"); cash = Lang.parseInt(cash);
var r2c1 = WMLBrowser.getVar("r2c1"); var r2c2 = WMLBrowser.getVar("r2c2"); var r2c3 = WMLBrowser.getVar("r2c3");
if ((r2c1 == "heart") && (r2c2 == "heart") && (r2c3 == "heart")) cash += 50; else if ((r2c1 == "heart") && (r2c3 == "heart")) cash += 25; else if ((r2c1 == "heart") (r2c3 == "heart")) cash += 10;
else if ((r2c1 == "gem") && (r2c2 == "gem") && (r2c3 == "gem")) cash += 250;
else if ((r2c1 == "dollarsign") && (r2c2 == "dollarsign") && (r2c3 == "dollarsign")) cash += 1000;
if (cash < 10) { Dialogs.alert("Game Over!"); WMLBrowser.go("SlotMachine.wml"); } else { cash = String.format("%1.1d", cash); WMLBrowser.setVar("cash", cash);
WMLBrowser.go("SlotMachineSpinAgain.wml"); }
}
После завершения "вращения барабанов" игорного автомата сценарий вызываетфункцию winCash, находящуюся в файле SlotMachine2.wmls. Функция winCash устанавливает факт выигрыша, и если таковой имеется, обновляет сумму выигрыша пользователя. Наконец, приложение вызывает функцию WMLBrowser. refreshдля обновления информации, отображаемой на экране. Файл SlotMachine2,wmlsсодержит следующий программный код:
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>
</head>
<card id="SpinAgain">
<onevent type="onenterforward">
<refresh>
<setvar name="LoopCounter" value="0" />
<setvar name="SpinTime" value="1" />
</refresh>
</onevent>
<p align="center" mode="nowrap">
Slot Machine<br/>
<table align="center" columns="5">
<tr>
<td> </td> <td><img alt="" src="" localsrc= "$(r1c1)" /></td> <td><img alt="" src="" localsrc= "$(r1c2)" /></td> <td><img alt="" src="" localsrc= "$(r1c3)" /></td> <td> </td>
</tr>
<tr>
<td>=</td> <td><img alt="" src="" localsrc= "$(r2c1)" /></td> <td><img alt="" src="" localsrc= "$(r2c2)" /></td> <td><img alt="" src="" localsrc= "$(r2c3)" /></td> <td>=</td>
</tr>
<tr>
<td> </td> <td><img alt="" src="" localsrc= "$(r3c1)" /></td> <td><img alt="" src="" localsrc= "$(r3c2)" /></td> <td><img alt="" src="" localsrc= "$(r3c3)" /></td> <td> </td>
</tr>
</table>
$$$(cash)
<do type="accept" label="Spin">
<go href="SlotMachineSpin.wml" /> </do>
</p>
</card>
</wml>
Как вы можете видеть, WML-страница сбрасывает счетчик циклов и таймер в исходное состояние, затем отображает текущие установки игорного автомата и остаток игровых денег. При выборе пользователем опции Spin (Вращение), программа загружает ранее рассмотренную WML-страницу SlotMachineSpin.wml.
Рассмотрение приложения waplib
Приглашение пользователю на выбор типа приложений Рисунок 24.1. Приглашение пользователю на выбор типа приложений
Рассмотрение Both.hdml Рассмотрение Both.hdml
Если браузер пользователя поддерживает и WML, и HDML (сценарию известно обэтом, так как обеим переменным, $WAPhdml и $WAPwml, присвоены значения), сценарий index.cgi загружает HDML-страницу Both.hdml, которая отображает меню,позволяющее пользователю выбирать или WML-, или HDML-приложения. HDML-страница Both.hdml реализуется с помощью следующего программного кода:
<HDML Version=3.0 Markable=True TTL=0>
<Choice Name=select Method=Alpha>
<Center>Select HDML/WML
<CE Task=GO Dest=Demos.hdml>HDML Demos <CE Task=GO Dest=Demos.wml>WML Demos
</Choice>
</HDML>
В данном случае, так как браузер поддерживает как WML, так и HDML, приложениемогло бы использовать любой из этих языков для реализации простой страницы.Как вы можете видеть, в зависимости от выбранной пользователем опции меню,страница загружает HDML- или WML-страницы.
Представленные в данной книге приложения написаны для автономного функционирования и отличаются от варианта, когда приложения запускаются с помощью опций меню. При запуске приложений сwaplib.com вы обнаружите, что после завершения приложений не происходит возврата в основное меню. Чтобы упростить работу с несколькими приложениями, можно маркировать основное меню (и каждое приложение). Данное свойство позволяет использовать функциюзакладок (Bookmark), существующую у вашего телефона, для маркировки основного меню (или любого из приложений) с тем, чтобы можно было легко вернуться в основное меню, воспользовавшись менюзакладок телефона.
Рассмотрение Demos.hdml Рассмотрение Demos.hdml
Если браузер пользователя поддерживает только HDML (сценарию известно обэтом, так как переменной $WAPhdml присвоено значение, а переменной $WAPwmlзначение не присвоено), сценарий index.cgi будет загружать HDML-страницу
Demos.hdml, которая отображает меню приложений, написанных на HDML. HDML-страница Demos.hdml реализуется с помощью следующего программного кода:
<HDML Version=3.0 Markable=True TTL=0>
<Choice Name=select Method=Alpha>
<Center>Select Demo (HDML)
<CE Task=GO Dest=WorldTime/WorldTime.hdml>World Time <CE Task=GO Dest=SkiConditions/SkiConditions.hdml>Ski Conditions <CE Task=GO Dest=MovieGuide/MovieGuide.hdml>Movie Guide <CE Task=GO Dest=CurrencyConvert/CurrencyConvert.hdml>Currency Converter <CE Task=GO Dest=SmartHouse/SmartHouse.hdml>Smart House <CE Task=GO Dest=StockQuote/StockQuote.hdml>Stock Quotes <CE Task=GO Dest=PhoneBook/PhoneBook.hdml>Phone Book <CE Task=GO Dest=WapPage/WapPage.hdml>Wap Page <CE Task=GO Dest=WapMail/WapMail.hdml>WAP Mail <CE Task=GO Dest=FlightSchedule/FlightSchedule.hdml>Flight Schedule <CE Task=GO Dest=PackageTracker/PTracker.hdml>Package Tracker <CE Task=GO Dest=MortgageCalc/MortgageCalc.hdml>Mortgage Calculator <CE Task=GO Dest=Weather/Weather.hdml>Weather Info <CE Task=GO Dest=CatalogOrder/CatalogItem.hdml>Catalog Order <CE Task=GO Dest=RestaurantCall/RestaurantCall.hdml>Restaurant-Call <CE Task=GO Dest=RestaurantRes/RestaurantRes.hdml>Restaurant-Res <CE Task=GO Dest=HotelInfo/HotelInfo.hdml>Hotel Info <CE Task=GO Dest=YellowPages/YellowPages.hdml>Yellow Pages <CE Task=GO Dest=RealEstate/RealEstate.hdml>Real Estate Listings
</Choice>
</HDML>
В соответствии с тем же форматом, который используют и другие HDML-приложения данной книги, первый элемент сообщает браузеру (или другим программистам) информацию о версии спецификации HDML, поддерживаемой приложением. Параметр Markable=True определяет, что браузер может устанавливать на HDML-странице закладку, а параметр тть=0 предписывает браузеру не выполнять кэширование HDML-страницы. Для отображения и обработки опций меню, выбранных пользователем, в программном коде приложения используетсяэлемент .
Рассмотрение приложения Demos.wml Рассмотрение приложения Demos.wml
Если браузер пользователя поддерживает только WML (сценарию известно обэтом, так как переменной $WAPwml присвоено значение, а переменной $WAPhdmlзначение не присвоено), сценарий index.cgi будет загружать WML-страницуDemos.wml, которая отображает меню приложений, написанных на WML. WML-страница Demos.wml реализуется с помощью следующего программного кода:
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>
</head>
<card id="select" title="Demos">
<p align="center" mode="wrap"> Select Demo (WML) </p>
<p align="left" mode="nowrap">
<select> <option onpick="WorldTime/WorldTime.wml">World Time</option> <option onpick="SkiConditions/SkiConditions.wml">Ski Conditions< /option> <option onpick="MovieGuide/MovieGuide.wml">Movie Guide</option> <option onpick="CurrencyScript/CurrencyScript.wml">Currency Script</option> <option onpick="SmartHouseScript/SmartHouseScript.wml">Smart House Script</option> <option onpick="StockQuote/StockQuote.wml">Stock Quotes</option> <option onpick="PhoneBook/PhoneBook.wml">Phone Book</option> <option onpick="WapPage/WapPage.wml">Wap Page</option> <option onpick="WapMail/WapMail.wml">WAP Mail</option> <option onpick="FlightSchedule/FlightSchedule.wml">Flight Schedule</option> <option onpick="PackageTracker/PTracker.wml">Package Tracker</option> <option onpick="MortgageCalc/MortgageCalc.wml">Mortgage Calculator</option> <option onpick="Weather/Weather.wml">Weather Info</option> <option onpick="CatalogOrder/CatalogItem.wml">Catalog Order</option> <option onpick="RestaurantCall/RestaurantCall.wml">Restaurant- Call</option> <option onpick="RestaurantRes/RestaurantRes.wml">Restaurant- Res</option> <option onpick="HotelInfo/HotelInfo.wml">Hotel Info</option> <option onpick="YellowPages/YellowPages.wml">Yellow Pages</option> <option onpick="RealEstate/RealEstate.wml">Real Estate Listings</ option> <option onpick="SmartHouse/SmartHouse.wml">Smart House</option> <option onpick="CurrencyConvert/CurrencyConvert.wml">Currency Converter</option> <option onpick="MortgageScript/MortgageScript.wml">Mortgage Script</option> <option onpick="SlotMachine/SlotMachine.wml">Slot Machine</option> </select>
</p>
</card>
</wml>
В соответствии с форматом любого из WML-приложений, представленных в данной книге, первые два элемента WML-страницы сообщают WAP-браузерам версиюWAP-спецификации, которую поддерживает приложение. Элемент позволяет указывать для WML-страницы метаинформацию. В нашем случае параметрhttp-equiv=Cache-Control сообщает WAP-браузеру, что данная часть мета-информации относится к системе кэширования памяти. Аналогично, параметрcontent=max-age=0 сообщает браузеру, что максимальное время, в течение которого должно выполняться кэширование WML-страницы, равно нулю секунд; тоесть, браузер должен не запоминать, а повторно загружать данные с сервера каждый раз, когда поступает запрос. Для данной книги нулевое значение было выбрано, чтобы помочь читателю в разработке программы. При выборе нулевогозначения каждый раз, когда происходит изменение, это изменение передается нателефон. В реально эксплуатируемом приложении статическое меню, подобноерассматриваемому здесь, по-видимому, должно использовать интервал хранения,установленный по умолчанию, равным 30 дням. Наконец, параметрforua="true" определяет, что данное значение Cache-Control предназначенодля телефона и не должно удаляться каким-либо промежуточным агентом.
Для отображения и обработки пунктов меню в программном коде используетсяэлемент . Когда пользователь выбирает какое-то конкретное приложение, элемент select (Выбор) предписывает браузеру загрузить страницу приложения из соответствующего каталога.
Рассмотрение приложения waplib.com Рассмотрение приложения waplib.com
При запуске приложения waplib.com выполняется Peri-сценарий index.cgi, чтобы установить тип браузера пользователя. Тип браузера определяется путем анализазначения параметра НТТР_АССЕРТ, получаемого от браузера, запрашивающего сервис. Сценарий index.cgi реализуется с помощью следующего программного кода:
#!/usr/bin/perl
$WAPwml = ""; $WAPhdml = "";
$accept = $ENV{"HTTP_ACCEPT"};
if ($accept =~ /wml/) { $WAPwml = "wml"; }
if ($accept =~ /hdml/) { $WAPhdml = "hdml"; }
if (($WAPwml eq "") && ($WAPhdml eq "")) { print "Location: http://www.waplib.com/WebStart.html\n\n"; }
elsif (($WAPwml eq "wml") && ($WAPhdml eq "")) { print "Location: http://www.waplib.com/Demos.wml\n\n"; }
elsif (($WAPwml eq "") && ($WAPhdml eq "hdml")) { print "Location: http://www.waplib.com/Demos.hdml\n\n"; }
else { print "Location: http://www.waplib.com/Both.hdml\n\n"; }
Приложение использует функцию $ENV для выборки значения переменнойНТТР_АССЕРТ. Затем программа выполняет проверку, чтобы определить, включает лизначение переменной буквы wml. При положительном результате (когда буквы wmlприсутствуют), программный код присваивает значение wml переменной $WAPwml,которую позже он может проверить с помощью конструкции условного перехода if.Далее выполняется аналогичная проверка в отношении букв hdml. Если ни переменной $WAPwml, ни переменной $WAPhdml не присвоены значения, то это означает, чтобраузер не поддерживает ни WML, ни HDML, вследствие этого приложение запускаетHTML-файл WebStarthtml, отображающий сообщение о скором выходе книги "WAP вдействии. Доступ к Интернет-сайтам через сотовый телефон".
Заметьте, что сценарий запускает WML-, HDML- или HTML-файлы просто путем печати слова Location (Адрес), за которым следует требуемый URL. Когда браузервстречает URL в таком формате, он совершает ветвление, переходя на соответствующий адрес.
В реальном приложении ваш HTML-сайт, вероятно, будет выполнять обработкуданных, связанную или не связанную с WML- и HDML-сайтами. HTML-файлWebStart.html содержит следующий программный код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html> <head> <title>WAPLIB</title> </head>
<body> <div align="center"><h1>Wireless Applications Programmer's Library</h1></div><br> <div align="center"><h2>Coming soon</h2></div>
</body> </html>
Приложение
Арифметические операции Арифметические операции
В языке WMLScript реализованы следующие базовые бинарные арифметические операции:
Оператор
Операция
+
сложение чисел или объединение символьных строк
-
вычитание
*
умножение
/
деление
div
целочисленное деление
Кроме того, язык WMLScript поддерживает следующий набор более сложных бинарных арифметических операций:
Оператор
Операция
%
остаток от деления (знак результата совпадает со знаком делимого)
"
поразрядное смещение влево
"
поразрядное смещение вправо
>>>
поразрядное смещение вправо с заполнением нулями
&
поразрядная операция "И" (AND)
1
поразрядная операция "ИЛИ" (OR)
/\
поразрядная операция "исключающее ИЛИ" (XOR)
Библиотека Console Библиотека Console
Библиотека Console содержит набор функций, которые могут быть полезными при отладке программ.
Print Функция: Console.print(value);
Описание: Преобразует заданное значение в строку и выводит ее в информационное окно инструментального программного пакета (SDK) Phone. Аргумент: value = Любое значение
Пример: Следующий сценарий использует функцию
Console.print(), чтобы в отладочных целях
вывести три имени в одну строку в информаци-
онном окне инструментального программного
пакета Phone: extern function PrintTestO
{ var Namel = "Matt";
var Name2 = "Krissy"; var Name3 = "Tommy";
Console.print (Namel); Console.print (Name2); Console.print (Name3); }
Println
Функция: Console.println(value);
Описание: Преобразует заданное значение в строку, выводит ее в информационное окно SDK Phone и перемещает курсор на следующую строку. Аргумент: value = Любое значение
Пример: Следующий сценарий использует функцию
Console.println(), чтобы в отладочных целях вывести три имени на три разные строки в ин формациошюм окне инструментального пакета
Phone:
extern function PrintLnTest()
var Namel = "Matt";
var Name2 = "Krissy";
var NameS = "Tommy";
Console.println (Namel);
Console.println (Name2);
Console.println (NameS);
Библиотека Dialogs Библиотека Dialogs
Библиотека Dialogs предоставляет набор функций пользовательского интерфейса.
alert
Функция: Dialogs.alert(message);
Описание: Отображает заданное сообщение, ожидает под- . тверждения со стороны пользователя и возвра- щает пустую строку.
Аргумент: message = Строка
Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
Dialogs. alert () для вывода на экран сообщения:
extern function AlertTestO {
var ResultString = "Dialogs .alert () " + "\r\r" "This is an alert!
Dialogs .alert (ResultString) ; . }
confirm
Функция: Dialogs.confirm(message, OKPrompt, Cancel- Prompt) ;
Описание: Отображает заданное сообщение и предоставляет пользователю возможность выбора из двух
ответов. Возвращает логическое значение true,
если выбран ответ ок и false, если выбран ответ Cancel.
Аргументы: message = Строка
, OKPrompt = Строка
CancelPrompt = Строка
Возвращаемое значение: Строка
Пример: Следующий сценарий использует функцию
Dialogs. confirm () для отображения приглашения пользователю на взаимодействие с приложением, причем приглашение включает экранные кнопки Yes и No:
extern function ConfirmTest() {
var Message = "Dialogs.confirm()" + "\r\r" + "Are you sure?"; var OK = "Yes"; var Cancel = "No";
Dialogs.confirm(Massage, OK, Cancel);
}
prompt
Функция: Dialogs.prompt(message, default);
Описание: Отображает указываемое сообщение message в
качестве приглашения пользователю на взаимодействие с приложением и возвращает вводимые пользователем данные. Используемое по умолчанию значение default определяет начальное содержимое переменной, которой присваиваются вводимые пользователем данные.
Аргументы: message = Строка
default = Строка Возвращаемое значение: Строка
Пример: Следующий сценарий использует функцию
Dialogs. prompt () для вывода приглашения
пользователю на ввод номера телефона. По
умолчанию пользователю для редактирования предлагается значение 555-1212:
extern function PromptTestO
var Message = "Dialogs.prompt()" + "\r\r" + "Phone Number:"; var PhoneNo = "555-1212";
Dialogs.prompt(Message, PhoneNo);
Библиотека Float Библиотека Float
Библиотека Float содержит набор функций для работы с числами в формате с плавающей запятой. Наличие данных функций носит необязательный характер. Если устройство не поддерживает операции над числами с плавающей запятой, все функции данной библиотеки будут возвращать значение invalid.
Ceil
Функция: Float, ceil (value);
Описание: Возвращает наименьшее целое число, которое
превышает входное значение аргумента или равно ему. Если входное значение аргумента - целое число, функция возвращает это число.
Аргумент: value = Число
Возвращаемое значение: Целое число или значение invalid
Пример: Следующий сценарий использует функцию Float, ceil () для нахождения наименьших целых чисел, одно из которых не меньше положи тельного числа с плавающей запятой, а другое - не меньше отрицательного числа с плавающей запятой:
extern function CeilTestO {
var Argumentl = 10.5; var Resultl = Float.ceil(Argumentl);
var Argument2 = -5.5; var Result2 = Float.ceil(Argument2);
var ResultString = "Float.ceil()" + "\r\r" +
"ceil(10.5) = " + Resultl + "\r" + "ceil(-5.5) = " + Result2;
Dialogs.alert(ResultString);
}
floor
Функция: Float, floor (value);
Описание: Возвращает наибольшее целое число, которое
меньше входного значения аргумента или равно ему. Если входное значение аргумента - целое число, функция возвращает это число.
Аргумент: value = Число Возвращаемое значение: Целое число или значение invalid
Пример: Следующий сценарий использует функцию
Float.floor() трижды: для нахождения наибольших целых чисел, одно из которых должно быть не больше положительного числа с плавающей запятой, другое - не больше отрицательного числа с плавающей запятой и третье - не больше целого числа:
extern function FloorTestO
{ . var Argumentl = 10.5;
, var Resultl = Float.floor(Argumentl);
var Argument2 = -5.5;
var Result2 = Float, floor (Argument2) ;
var Arguments = 300;
var Results = Float.floor(Arguments);
var ResultString = "Float.floor()" + "\r\r" + "floor(10.5) = " + Resultl + "\r" + "floor(-5.5) = " + Result2 + "\r" + "floor(SOO) = " + Results;
Dialogs.alert(ResultString); }
int
Функция: Float, int (value);
Описание: Возвращает целую часть входного значения аргумента.
Аргумент: value = Число
Возвращаемое значение: Целое число или значение invalid
Пример: Следующий сценарий использует функцию
Float. int () для извлечения целой части как у положительных, так и у отрицательных чисел с плавающей запятой:
extern function IntTestQ {
var Argumentl = 10.5;
var Resultl = Float.int(Argumentl);
var Argument2 =-5.5; var Result2 = Float, int (Arguments) ;
var ResultString = "Float.int()" + "\r\r" +
"int(10.5) = " + Resultl + "\r" + "int(-5.5) = " + Result2;
Dialogs.alert(ResultString) ;
}
maxFloat
Функция: Float. maxFloat ();
Описание: Возвращает наибольшее число с плавающей запятой, поддерживаемое интерпретатором.
Возвращаемое значение: Число с плавающей запятой
Пример: Следующий сценарий использует функцию
Float. maxFloat () для определения наибольшего числа с плавающей запятой, которое поддерживает интерпретатор:
extern function maxFloatTest ()
{
var Result = Float. maxFloat О;
var ResultString = "Float.maxFloat() " + "\zr\r" + Result; Dialogs.alert(ResultString);
}
minFloat
Функция: Float. minFloat ();
Описание: Возвращает наименьшее число с плавающей запятой, поддерживаемое интерпретатором.
Возвращаемое значение: Число с плавающей запятой
Пример: Следующий сценарий использует функцию
Float.minFloat () для определения наименьшего числа с плавающей запятой, работу с которым поддерживает интерпретатор:
extern function minFloatTestO
{
var Result = Float.minFloat();
var ResultString = "Float.minFloat()" + "\r\r" + Result;
Dialogs.alert(ResultString);
pow
Функция: Float, pow (valuel, value2);
Описание: Возвращает результат возведения первого аргумента (valuel) в степень, равную второму аргументу (value2). Если значение первого аргумента (valuel) является отрицательным числом, то значение второго аргумента (valua2) должно
быть целочисленным.
Аргументы: valuel = Число
value2 = Число
Возвращаемое значение: Число с плавающей запятой или значение
invalid
Пример: Следующий сценарий использует функцию
Float. pow () для вычисления результата возведения 3 в степень 2 и корня квадратного из 16:
extern function PowTestO < var Argumentl = 3; var Arguments = 2; var Resultl = Float.pow(Argumentl, Argument2);
var Arguments = 16; var Argument4 = .5;
var Result2 = Float.pow(Arguments, Argument4);
var ResultString = "Float.pow()" + "\r\r" + "pow(3, 2) = " + Resultl + "\r" + "pow(16, .5) = " + Result2;
Dialogs.alert(ResultString);
}
round Функция: Float.round(value);
Описание: Возвращает целое число, ближайшее к входному значению. Если два целых числа одинаково близки к входному значению, функция возвращает большее из этих чисел.
Аргумент: value = Число Возвращаемое значение: Целое число или значение invalid
Пример: Следующий сценарий использует функцию
Float.roundO для округления чисел 5.4, 5.5 и
5.6 до ближайшего целого числа:
extern function RoundTest()
{
var Argument! = 5.4;
var Resultl = Float.round(Argumentl);
var Argument2 = 5.5;
var Result2 = Float.round(Argument2);
var Arguments = 5.6; var Results = Float.round(Arguments);
var ResultString = "Float.round()" + "\r\r" +
"round(5.4) = " + Resultl + "\r"
"round(5.5) = " + Result2 + "\r" +
"round(5.6) = " + Results,-
Dialogs.alert(ResultString);
}
sqrt Функция: Float, sqrt (value);
Описание: Возвращает корень квадратный из входного
значения. Если входное значение отрицательно,
функция возвращает значение invalid.
Аргумент: value = Число
Возвращаемое значение: Число с плавающей запятой или значение
invalid
Пример: Следующий сценарий использует функцию Float.sqrt() для вычисления корней квадратных из 2 и-9:
extern function SqrtTest() ,
{
var Argumentl = 2;
var Resultl = Float, sqrt (Argumentl) ; vis.
var Argument2 = -9; var Result2 = Float. sqrt (Argument2);
var ResultString = "Float.sqrt()" + "\r\r" +
"sqrt(2) = " + String.toString(Resultl) + "sqrt(-9) = " + String.toString(Result2);
Dialogs.alert(ResultString);
}
Библиотека Lang Библиотека Lang
Библиотека Lang содержит набор функций, предназначенных для работы с элементами языка WMLscript.
Функция: Lang.abort(errorMessage);
Описание: Прерывает работу интерпретатора WMLScript и
возвращает управление WML-странице.
Аргумент: errorMessage = Строка Возвращаемое значение: Нет
Пример: Следующий сценарий демонстрирует использо- вание функции Lang.abort() для прекращения работы сценария:
extern function AbortTestO
{
var Argument = 0; BadFun(Argument);
Dialogs.alert("This will never display");
function BadFun (Argument)
Lang.abort("Error:");
Dialogs, alert ("Neither will this,
}
Функция: ; bang, abs (number);
Описание: К, Возвращает абсолютное значение числа. Если
число имеет тип integer (целое число), возвращается целочисленное значение. Если число
имеет тип floating-point (число с плавающей запятой), возвращается число с плавающей запятой.
Аргумент: number = Число
Возвращаемое значение: Число или значение invalid
Пример: Следующий сценарий использует функцию
Lang.abs() дважды: первый раз, чтобы возвратить абсолютное значение отрицательного целого числа, второй раз, чтобы возвратить абсо лютное значение отрицательного числа с плавающей запятой:
extern function AbsTestO <
var Argumentl = -5;
var Resultl = Lang.abs(Argumentl);
var Arguments = -7 . ;
var Result2 = bang.abs(Arguments); ,
var ResultString = "Lang.abs()" + "\r\r" +
"abs(-5) = " + Resultl + "\r" +
"abs(-7.) = " + Result2; :,n
Dialogs. alert (ResultString) ; ;- >
}
characterSet
Функция: Lang. characterSet О;
Описание: Возвращает целочисленное значение, которое
указывает на набор символов, поддерживаемых интерпретатором.
Возвращаемое значение: Целое число
Пример: Следующий сценарий использует функцию
Lang.characterSet() для определения набора символов, поддерживаемых интерпретатором.
extern function CharSetTest() м
{ var Result = Lang.characterSet();
var ResultString = "Lang.characterSet () " + "\r\r" + Result/- Dialogs .alert(ResultString);
>
exit
Функция: Lang. exit (value);
Описание: Останавливает выполнение WMLScript-сценария
и возвращает управление WML-странице.
Аргумент: value = Любое значение Возвращаемое значение: Нет
Пример: Следующий сценарий демонстрирует использование функции Lang.exit() для прекращения выполнения сценария.
extern function ExitTestO {
var Argument = 0; BadFun(Argument); Dialogs.alert("This will never display");
function BadFun (Argument) :
Lang.exit ("Error:"); Dialogs.alert("Neither will this");
}
Функция: Lang.floatO ;
Описание: Возвращает логическое значение true, если
числа с плавающей запятой поддерживаются
интерпретатором и false, если числа с плавающей запятой не поддерживаются интерпретатором
Возвращаемое значение: Логическое значение
Пример: Следующий сценарий использует функцию
Lang. float (), чтобы определить поддерживаются интерпретатором числа с плавающей запя той или нет:
extern function FloatTestO
var Result = Lang.floatO ; var ResultString = "Lang.floatO" + "\r\r" + Result;
Dialogs.alert(ResultString); }
isFloat
Функция: Lang.isFloat(value);
Описание: Возвращает значение true, если аргумент функ-
ции может быть конвертирован в число с плавающей запятой и возвращает значение false, если аргумент функции не может быть конвертирован в число с плавающей запятой. Если система не поддерживает операции над числами с
плавающей запятой или аргумент имеет недопустимое значение, функция возвращает значение invalid.
Аргумент: value = Любое значение Возвращаемое значение: Логическое значение или значение invalid
Пример: Следующий сценарий использует функцию
bang. isFloat (), чтобы определить, могут ли
значения "5.0", "7" и "String" быть конвертированы в числа с плавающей запятой:
extern function isFloatTest() : {
var Argumentl = "5.0"; "*'"'
var Resultl = Lang.isFloat(Argumentl) ;
var Argument2 = "7";
var Result2 = Lang.isFloat(Argument2);
var Arguments = "String";
var Results = Lang.isFloat(Arguments);
var ResultString = "Lang.isFloat ()" + "\r\r" 4-
"isFloat(5.0) = " + Resultl + "\r" + "isFloat(7) = " + Result2 + "\r" + "isFloat (String) = " + Results,-
Dialogs.alert(ResultString);
}
Функция: Lang.islnt (value);
Описание: Возвращает логическое значение true, если
аргумент функции может быть конвертирован в
целое число и возвращает логическое значение
false, если аргумент функции не может быть
конвертирован в целое число. Если аргумент
имеет недопустимое значение, возвращается
значение invalid.
Аргумент: value = Любое значение
Возвращаемое значение: Логическое значение или invalid
Пример: Следующий сценарий использует функцию Lang.isIntO, чтобы определить могут ли значения "5.0", "7" и "String" быть конвертированы в целые числа:
extern function is!ntTest() ;;
{ var Argumentl = "5.0"; var Resultl = Lang.islnt(Argumenfel);
var Argument2 = "7"; var Result2 = Lang. islnt (Argument2) ;
var Arguments = "String"; var Results = Lang.islnt(Arguments);
var ResultString = "Lang.isIntO" + "\r\r" +
"islnt(5.0) = " + Resultl + "\r" + "islnt(7) = " + Result2 + "\r" +
"islnt (String) = " + Results;
Dialogs.alert(ResultString); }
max
Функция: Lang.max(valuel, value2);
Описание: Возвращает большее из двух значений.
Возвращаемое функцией значение и его тип совпадают со значением и типом возвращаемого аргумента. Если значения равны, возвращается первый аргумент.
Аргументы: valuel = Число
value2 = Число Возвращаемое значение: Число или значение invalid
Пример: Следующий сценарий использует функцию
Lang.maxO трижды: для определения большего
положительных чисел, двух отрицательных чисел, а также символьной строки и числа:
extern function MaxTestO
var Argumentl = 5.0;
var Argument2 = 500;
var Resultl = Lang.max(Argumentl, Argument2);
var Arguments = -7;
var Argument4 = -10.0;
var Result2 = Lang.max(Arguments, Argument4);
var Arguments = "String"; var Arguments = 0.0; var Results = Lang.max(Arguments, Arguments);
var ResultString = "Lang.maxO" + "\r\r" +
"max(5.0, 500) = " +
String.toString(Resultl) + "\r" + "max(-7, -10.0) = " +
String.toString(Result2) + "\r" + "max(String, 0.0) ="+ I String.toString(Results);
Dialogs.alert(ResultString);
maxlnt
Функция: Lang.maxlnt();
Описание: Возвращает значение максимального целого
числа, поддерживаемого интерпретатором.
Возвращаемое значение: Целое число
Пример: Следующий сценарий использует функцию
Lang.maxlnt() для определения максимального целого числа, поддерживаемого интерпретато-
ром:
extern function maxIntTestO
{ var Result = Lang.maxlnt();
var ResultString = "Lang.maxlnt()" + "\r\r" + Result; Dialogs.alert(ResultString) ;
mm
Функция: Lang.min(valuel, value2);
Описание: Возвращает меньшее из двух значений.
Возвращаемое функцией значение и его тип
совпадают со значением и типом возвращаемого
аргумента. Если значения равны, возвращается первый аргумент.
Аргументы: valuel = Число
value2= Число Возвращаемое значение: Число или значение invalid
Пример: Следующий сценарий использует функцию
Lang.minQ трижды: для определения меньшего из двух положительных чисел, двух отрицатель- ных чисел, а также символьной строки и числа:
extern function MinTestO
var Argumentl = 5.0;
var Argument2 = 500;
var Resultl = Lang.min(Argumentl, Argument2);
var Arguments = -7;
var Argument4 = -10.0;
var Result2 = Lang.min(Arguments, Argument-!) ;
var Arguments = "String";
var Arguments =0.0;
var Result3 = Lang.min(Arguments, Arguments);
var ResultString = "Lang.minO" + "\r\r" + "min(5.0, 500) = " +
String.toString(Resultl) + "\r" + "min(-7, -10.0) = " +
String.toString(Result2) + "\r" + "min(String, 0.0) = " +
String.toString(Results);
Dialogs . alert (ResultString) ;
>
minlnt
Функция: 'Lang. minlnt ();
Описание: Возвращает значение минимального целого
числа, поддерживаемого интерпретатором.
Возвращаемое значение: Целое число
Пример: Следующий сценарий использует функцию
bang. minlnt () для определения минимального
целого числа, поддерживаемого интерпретато- ром:
extern function minlntTestO var Result = Lang.minlnt();
var ResultString = "Lang.minlnt()" + "\r\r" + Result; Dialogs.alert(ResultString) ;
parserloat
Функция: Lang.parseFloat (stringValue);
Описание: Возвращает значение в формате числа с плавающей запятой, которое определяется входной символьной строкой. Если при анализе строки выдается ошибка, функция возвращает значение
invalid. Анализ прекращается при встрече первого символа, который не является частью кор-
ректного числа с плавающей запятой.
Аргумент: stringValue = Символьная строка
Возвращаемое значение: Число с плавающей запятой или значение
invalid
Пример: Следующий сценарий использует функцию
Lang.parseFloat () для преобразования
СИМВОЛЬНЫХ строк "5.0", "15 sq. in." И "А = 5" в числа с плавающей запятой: extern function ParseFloatTest() var Argumentl = "5.0";
var Resultl = Lang.parseFloat(Argumentl);
var Argument2 = "15 sq. in.";
var Resuit2 = Lang.parseFloat(Argument2);
var Arguments = "A = 5"; t ч var Results = Lang.parseFloat(Arguments);
var ResultString = "Lang.parseFloat()" + "\r\r" +
"parseFloat(5.0) = " + : "-'''!""!' String. toString(Resultl) + "\r" +
"parseFloat(15 sq. in.) = " +
'- ,''*''" '< -' - String. toString (Result2) + "\r" + "parseFloat(A = 5) = " + String.toString(Results);
Dialogs, alert (ResultString) ;
}
parselnt
Функция: Lang.parselnt(stringValue); Описание: Возвращает целочисленное значение, которое
определяется входной символьной строкой. Еc ли при анализе строки выдается ошибка, функвозвращает значение invalid. Анализ прекращается при встрече первого символа, который не является начальным знаком "+" или или десятичной цифрой.
Аргумент: stringValue = Символьная строка Возвращаемое значение: Целое число или значение invalid
Пример: Следующий сценарий использует функцию bang.parselnt() для преобразования символьных
строк "5. О", "15 sq. in." и "А = 5" в целые числа:
extern function ParselntTest()
{ var Argumentl = "5"; var Resultl = Lang.parselnt (Argumentl) ;
var Arg\iment2 = "15 sq. in."; , var Result2 = Lang.parselnt(Argument2);
var Arguments = "A = 5"; t
var Results = Lang.parselnt(Arguments);
var ResultString = "Lang.parselnt()" + "\r\r" +
"parselnt(5) = " +
String. toString (Resultl) + "\r" + "parselnt(15 sq. in.) = " + String.toString(Result2) + "\r" + "parselnt (A = 5) = " +
String.toString(Results);
Dialogs .alert (ResultString)
random
Функция: bang, random (value);
Описание: Возвращает псевдослучайное целое число, коорсе больше или равно нулю и при этом меньше или равно входному значению аргумента
функции. Если входное значение равно нулю,
функция возвращает нуль. Если входное значение отрицательно или не является числом
(строка или недопустимое значение), то функ ция возвращает значение invalid.
Аргумент: value = Целое число
Возвращаемое значение: Целое число или значение invalid
Пример: Следующий сценарий использует функцию
bang. random () дважды: для выдачи одного
псевдослучайного числа в диапазоне между 0 и
10, а другого псевдослучайного числа - между О
и-10:
extern function RandomTestO
{
var Argumentl =10;
var Resultl = Lang.random(Argumentl);
var Argument2 = -10;
var Result2 = Lang. random (Argument2);
var ResultString = "Lang.randomO" + "\r\r" +
"random(10) = " + String.toString(Resultl) +
"random(-lO) = " + String.toString(Result2);
Dialogs.alert(Resultstring); }
seed
Функция: bang, seed (value);
Описание: Инициализирует процесс генерации псевдослу чайных чисел и возвращает пустую строку. Если
входное значение больше или равно нулю, то оно
используется в качестве инициализирующего
значения; в противном случае используется системно-зависимое значение. Если входное значение аргумента функции не является числом,
функция возвращает значение invalid.
Аргумент: value = Целое число Возвращаемое значение: Символьная строка или значение invalid
Пример: Следующий сценарий использует функцию
Lang. seed () для инициализации генератора
псевдослучайных чисел:
extern function SeedTestO
{
var Argumentl = 10;
var Resultl = Lang. seed (Argumentl);
var Argument2 = 5; var Result2 = Lang.random(Argument2) ;
var ResultString = "Lang.seed()" + "\r\r" +
л "seed(10) = " + String.toString(Resultl) ;
Dialogs.alert(ResultString); ;
}
Библиотека String Библиотека String
Библиотека String содержит набор функций для работы с символьными строками. Строка представляет собой массив символов. Позиция каждого символа в строке задается его индексом. Индекс первого символа в строке равен нулю. Строка может также рассматриваться как массив элементов, разделяемых с помощью разделительного символа. Позиция каждого элемента в строке задается его индексом. Индекс первого элемента в строке равен нулю.
char At
Функция: String.charAt(string, offset);
Описание: Возвращает строку, состоящую из одного знака,
который совпадает с символом входной строки
и, в позиции, указываемой аргументом функции.
Первый символ во входной строке находится по нулевому адресу.
Аргументы: string = Символьная строка
off set = Число Возвращаемое значение: Символьная строка или значение invalid
Пример: Следующий сценарий использует функцию
String, char At () для извлечения из строки "Phil" второго и третьего символов:
extern function charAtTestO
{ var Argumentl = "Phil"; var Argument2 =1; var Resultl = String.charAt(Argumentl, Argument2);
var Arguments = 2;
var Result2 = String.charAt(Argumentl, Arguments);
var ResultString = "String.charAt()" + "\r\r" +
,, "String, char At (Phil, 2) = " 4- ; в
Resultl + "\r" + "String.charAt(Phil, 3) = " + Result2;
Dialogs, alert (Resul tString) ; }
compare
Функция: String, compare (stringl, string2);
Описание: Сравнивает две строки и возвращает значение
"-1", если первая строка (stringl) меньше, чем вторая строка (string2); возвращает значение "О", если строки одинаковы; и возвращает значение "+1", если первая строка (stringl) больше, чем вторая строка (string2).
Аргументы: stringl = Строка
string2 = Строка Возвращаемое значение: Целое число или значение invalid
Пример: Следующий сценарий использует функцию
String, compare () для сравнения строк "а" и "А":
extern function CompareTest()
{ var Argumentl = "a"; var Argument2 = "A";
var Resultl = String.compare(Argumentl, Argument2); var Result2 = String.compare(Argument2, Argumentl);
var ResultString = "String.compare()" + "\r\r" +
"String.compare(a, A) = " + Resultl + "\r" +
"String.compare(A, a) = " + Result2;
Dialogs.alert{ResultString); }
elementAt
Функция: String.elementAt(string, index, separator);
Описание: Сканирует строку string с элементами, разделяемыми символом-разделителем separator и возвращает элемент, расположенный в позиции,
определяемой аргументом index. Eсли значение index меньше нуля, функция возвращает пер-
вый элемент. Если значение index больше количества элементов, функция возвращает послед- ний элемент. Если входная строка пустая, возвращается пустая строка. Если символ- разделитель является пустой строкой, функция возвращает значение invalid.
Аргументы: string = Строка
index = Число
separator = Строка (используется только пер- вый символ строки)
Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию String.elementAt() для извлечения из списка третьего имени:
extern function elementAtTest ()
{
var Argument = "Matt Tommy Krissy Rosey" ; var Index=2; var Separator = " "; var Result = String.elementAt(Argument, Index, Separator);
var ResultString = "String.elementAt()" + "\r\r" + "Third element is " + Result;
Dialogs.alert(ResultString);
}
корректным элементом, поэтому в любой строке
будет, по крайней мере, один элемент. Если сим-
вол-разделитель является пустой строкой, функция возвращает значение invalid.
Аргументы: string = Строка
separator = Строка (используется только первый символ строки)
Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
String.elements () для подсчета количества
имен в списке:
extern function elementsTest ()
{ var Argument = "Matt Tommy Krissy Rosey";
var Separator = " "; var Result = String.elements(Argument, Separator);
var ResultString = "String.elements()" + "\r\r" +'
" The number of elements is " + Result;
Dialogs.alert(ResultString);
}
find
Функция: String.find(string, substring);
Описание: Возвращает индекс (отсчитываемый от нуля)
первого символа, с которого во входной строке
(string) начинается подстрока, совпадающая с
указываемой подстрокой (substring). Функция
возвращает "-1", если во входной строке не об-
наружено совпадения с указываемой подстро кой. Две строки совпадают только тогда, когда
они полностью одинаковы, включая регистры
всех символов.
Аргументы: string = Строка
substring = Строка Возвращаемое значение: Целое число
Пример: Следующий сценарий использует функцию
string.find() для определения в строке
"аЬсАВС123" позиции подстроки "АВ":
extern function FindTestO
<
var Argument = "abcABC123"; var LookFor = "AB"; var Result = String.find(Argument, LookFor);
var ResultString = "String, find ()" + "\r\r" + "The Index of AB is " + Result;
Dialogs.alert(ResultString) ; .
}
format
Функция: String, format (format, value);
Описание: Преобразует значение аргумента value в символьную строку в соответствии со значением аргумента format. Аргумент format определяется следующим образом:
[width][.precision]type
Параметр width (Ширина) указывает мини- мальное число печатаемых символов. Если на выходе число символов меньше, чем значение, определяемое параметром width, выходная строка дополняется слева пробелами так, чтобы получилось минимальное число символов. По умолчанию минимальное число символов, опре деляемое параметром width, равно единице.
Интерпретация параметра precision (Точность) зависит от значения параметра type
(Тип). Для типа d ( целые числа) точность определяет минимальное число разрядов в выходной строке. Если число разрядов в выходной строке меньше значения, определяемого точностью, выходная строка дополняется слева нулями. Для типа f (числа с плавающей запятой) точность определяет число разрядов в выходной строке после десятичной точки (во всех случаях до десятичной точки должен существовать хотя бы один разряд). По умолчанию число разрядов равно шести. Для типа s (строковые перемен-
ные) точность определяет число символов в вы ходной строке. По умолчанию в выходную стро ку будут выводиться все символы входного значения аргумента value.
Параметр type (Тип) определяет, как будет интерпретироваться результат, возвращаемый функцией: как целое число (d), как число с плавающей запятой (f) или как строка (s).
Аргументы: format = Строка
value = Любое значение Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
String, format () для вывода значения 10.25 в виде шестиразрядного числа с плавающей запятой, у которого после десятичной точки нахо-
дится всего один разряд:
extern function FormatTestO
{
var Format = "%6.1f"; var Argument =10.25; var Result = String.format(Format, Argument);
var ResultString = "String.format()" + "\r\r" +, "The result is: " + Result;
Dialogs .alert (ResultString) ;
}
insertAt
Функция: String.insertAt(string, element, index,
separator);
Описание: Возвращает строку с новым элементом (и, если необходимо, с разделителем), вставленным в
исходную строку в позицию, определяемую арументом index. Если значение index меньше
или равно нулю, элемент вставляется в начало строки. Если значение index больше количества элементов в строке, элемент вставляется в конец строки. Если разделительный символ представляет собой пустую строку, функция возвра щает значение invalid.
Аргументы: format = Строка
element = Строка
index = ЧИСЛО
separator = Строка (используется только пер- вый символ)
Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию String.insertAt() для вставки в список между именами Matt и Tommy имени Krissy:
extern function InsertAtTest ()
{ var List = "Matt Tommy"; var tolnsert = "Krissy"; var Index = 1; var Separator = " ";
var Result = String.insertAt(List, tolnsert, Index, Separator);
var ResultString = "String.insertAt()" + "\r\r" +
" The new string is: " + Result;
Dialogs.alert(ResultString); }
ISEmpty
Функция: String. isEmpty( string);
Описание: Возвращает логическое значение true, если
строка имеет нулевую длину и значение false, если длина строки ненулевая.
Аргумент: string = Строка Возвращаемое значение: Логическое значение
Пример: Следующий сценарий использует функцию
String. isEmpty (), чтобы установить являются ли строки "Matt" и " " пустыми:
extern function IsEmptyTest()
{ var Argumentl = "Matt"; var Resultl = String.isEmpty(Argumentl);
var Argument2 = "";
var Results = String. isEmpty (Arguments) ;
var ResultString = "String.isEmpty()" + "\r\r" +
"isEmpty (\"Matt\") = " 4- Resultl + "\r", "isEmpty(\"\") = " + Result2;
Dialogs.alert(ResultString) ;
}
length
Функция: String.length(string);
Описание: Возвращает длину (количество символов) строки.
Аргумент: string = Строка
Возвращаемое значение: Целое число
Пример: Следующий сценарий использует функцию
String, length () для подсчета количества символов в строке "Champion Matt":
extern function Lengthiest() {
var Argument = "Champion Matt";
var Result = String.length(Argument);
var ResultString = "String.length()" + "\r\r" + "length(\"Champion Matt\") = " + Result;
Dialogs.alert(ResultString); )
removeAt
Функция: String. removeAt (string, index, separator);
Описание: Возвращает новую строку, получаемую из исходной строки путем удаления элемента (и, если необходимо, разделителя), который находится в позиции, определяемой значением index. Если значение index меньше или равно нулю, удаля ется первый элемент. Если значение index больше, чем количество элементов в строке, удаляется последний элемент. Если аргумент string пустой, функция возвращает пустую строку. Если символ разделителя представляет собой пустую строку, функция возвращает значение invalid.
Аргументы: string = Строка
index = ЧИСЛО
separator = строка (используется только первый символ)
Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию String.removeAt () для удаления из списка имени Krissy:
extern function RemoveAtTest () {
var List = "Matt Krissy Tommy"; var Index = 1; var Separator = " ";
var Result = String.removeAt(List, Index, Separator);
var ResultString = "String.removeAt()" + "\r\r" + "The new string is: " + Result;
Dialogs . alert (ResultString) ;
}
вода строки, перевода страницы, вертикальной
табуляции) до одного, первого непечатаемого
символа.
Аргумент: string = Строка Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
String, squeeze () для удаления между именами "Matt" и "Tommy" всех лишних пробелов, кроме одного:
extern function SqueezeTest()
{
var List = "Matt Tommy"; var Result = String.squeeze(List);
var ResultString = "String.squeeze()" + "\r\r" +
"The new string is: " + Result;
Dialogs.alert(ResultString);
}
substring
Функция: String.substring(string, index, length);
Описание: Возвращает новую строку, которая представляет собой подстроку исходной строки. Новая строка
начинается с символа входной строки string, расположенного в позиции index, и содержит количество символов, определяемое аргументом length.
Аргументы: string = Строка
index = Число
length = ЧИСЛО
Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
String.substring() для извлечения из списка имени "Krissy":
extern function SubStringTest()
{ var List = "Matt Krissy Tommy"; var startChar = 5; var Length = 6;
var Result = String.substring(List, startChar, Length);
var ResultString = "String.substring()" + "\r\r" +
"The substring is: " + Result/ Dialogs .alert (ResultString) ;
}
extern function ToStringTest()
var Argument! =3.14; var Resultl = String.toString(Argumentl);
var Argument2 = 1/0;
var Result2 = String. toString(Argument2);
var Arguments = true;
var Results = String.toString(Arguments);
var ResultString = "String.toString()" + "\r\r" +
"toString(3.14) = " + Resultl + "\r" + "toString(1/0) = " + Result2 + "\r" + "toString (true) = " + Results,-
Dialogs.alert(ResultString);
}
!l trim
Функция: String.trim(string);
Описание: Возвращает новую строку, получаемую из входной строки string, путем удаления всех непечатаемых символов в начале и в конце исходной
СТРОКИ.
Аргумент: string = Строка Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию String.trim() для удаления всех пробелов с обоих концов строки - аргумента функции:
extern function TrimTestO
{ var Argument = " Matt " ;
var Result = String.trim(Argument);
var ResultString = "String.trim()" + "\r\r" +
"The new string is: " + Result;
Dialogs.alert(ResultString); }
Библиотека URL Библиотека URL
Библиотека URL содержит набор функций для работы как с абсолютными, так и с относительными указателями ресурсов (URL).
В общем случае URL описывается следующей синтаксической конструкцией:://:/;?#
escapeString
Функция: URL. escapeString (string);
Описание: Возвращает новую строку, получаемую из вход- ной строки string путем замены всех спецсим- волов на ESCAPE-последовательности в формате %хх. Если входная строка содержит символы, не являющиеся частью набора символов US-ASCII, функция возвращает значение invalid.
ESCAPE-последовательности заменяются сле- дующие символы:
Управляющие символы: (шестнадцатеричные
значения ОО-lf и 7f из набора символов USASCII)
Знак пробела: (шестнадцатеричное
значение 20 из набора символов US-ASCII)
Зарезервированные символы: ;/?:@& = + $,
Несмысловые символы: () |\Л[]'
Разделители:
Аргумент: string = Строка
Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
URL.escapeStringO для кодирования строки "@":
extern function EscapeStringTest()
{ var Argument = "@";
var Result = URL.escapeString(Argument);
var ResultString = "URL.escapeStringO" + "\r\r" "escapeString(@) = " + Result;
Dialogs. alert (ResultString) ;
getBase
Функция: URL. getBase ();
Описание: Возвращает абсолютный URL текущего
WMLScript-файла (без фрагмента).
Возвращаемое значение: Строка
Пример: Следующий сценарий использует функцию URL.getBase () для получения URL файла, в котором находится сценарий:
extern function GetBaseTest() {
var Result = URL.getBase();
var ResultString = "URL.getBase()" + "\r\r" +
"getBaseO = " + Result;
Dialogs.alert(ResultString);
}
getFragment
Функция: URL.getFragment (urlString);
Описание: Возвращает фрагмент, заданный во входной
URL-строке. При обнаружении некорректного синтаксиса URL функция возвращает значение invalid.
Аргумент: urlString = Строка Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию getFragment () для извлечения фрагмента из URL
extern function GetFragmentTest() {
var Result = URL.getFragment("");
var ResultString = "URL.getFragment()" + "\r\r" + "The fragment is " + Result;
Dialogs.alert(ResultString);
}
getHost
Функция: URL.getHost(urlString);
Описание: Возвращает имя хост-системы, указанное во
входной URL-строке. Относительные URL не
преобразуются в абсолютные URL, поэтому имя хост-системы в относительном URL будет возвращаться пустой строкой. При обнаружении некорректного синтаксиса URL функция воз- вращает значение invalid.
Аргумент: urlString = Строка Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
URL.getHostO для извлечения имени хост-системы из URL
extern function GetHostTest()
{
var Result = URL.getHost("#abed");
var ResultString = "URL.getHost()" + "\r\r" + "The host is " + Result;
Dialogs.alert(ResultString);
}
getParameters
Функция: URL. getParameters (urlString);
Описание: Возвращает параметры, заданные во входной
URL-строке. При обнаружении некорректного синтаксиса URL функция возвращает значение invalid.
Аргумент: ur IStr ing = Строка
Возвращаемое значение: Строка или значение invalid
Пример: ; Следующий сценарий использует функцию
URL.getParameters() для извлечения списка параметров из URL
extern function GetParametersTest() {
var Result = URL.getParameters(" ,-2;3");
var ResultString = "URL.getParameters()" + "\r\r" + "The parameters are " + Result;
Dialogs.alert(ResultString);
}
getPath
Функция: URL.getPath(urlString);
Описание: Возвращает путь, указанный во входной URL-
строке. При обнаружении некорректного син-
таксиса URL функция возрращает значение
invalid.
Аргумент: ur IStr ing = Строка Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
URL . getPath () для извлечения пути из URL
;
extern function GetPathTest() {
var Result = URL.getPath(""); var ResultString = "URL.getPath()" + "\r\r" +
"The path is " + Result;
Dialogs.alert(ResultString);
{
getPort
Функция: URL.getPort(urlString);
Описание: Возвращает порт, указанный во входной URL-
строке. Если порт не указан, функция возвращает пустую строку. При обнаружении некоррект- ного синтаксиса URL функция возвращает значение invalid.
Аргумент: urlString = Строка Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
URL. getPort () для извлечения номера порта из URL ;2;3:
extern function GetPortTest()
var Result = URL.getPort("");
var ResultString = "URL.getPort()" + "\r\r" +
"The port is " + Result;
Dialogs.alert(ResultString);
getQuery
Функция: URL.getQuery(urlString);
Описание: Возвращает запрос, указанный во входной URL- строке. Если запрос не указан, функция возвра- щает пустую строку. При обнаружении некорректного синтаксиса URL функция возвращает значение invalid.
Аргумент: urlString = Строка Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
URL.getQuery() для извлечения строки запроса из URL &b=2:
extern function GetQueryTest() {
var Result = URL.getQuery("&b=2");
var ResultString = "URL.getQuery()" + "\r\r" +
"The query is " + Result; :
Dialogs.alert(ResultString);
)
getReferer
Функция: tJRL.getReferer();
Описание: Возвращает URL ресурса, который вызвал текущий WMLScript-сценарий.
Возвращаемое значение: Строка
Пример: Следующий сценарий использует функцию
URL. getReferer () для получения имени WML- файла, вызвавшего сценарий:
extern function GetRefererTest() {
var Result = URL.getReferer();
var ResultString = "URL.getReferer()" + "\r\r" + "URL.getReferer = " + Result;
Dialogs.alert(ResultString);
{
getScheme
Функция: URL. getScheme (urlString);
Описание: Возвращает название протокола передачи данных, заданного во входной URL-строке. При об- наружении некорректного синтаксиса URL функция возвращает значение invalid.
Аргумент: urlString = Строка Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию URL. getScheme () для извлечения названия
протокола передачи данных, используемого в - URL 1;2;3:
extern function GetSchemeTest()
{
var Result = URL.getScheme("");
var ResultString = "URL. getScheme ()" + "\r\r" +
"The scheme is " + Result;
Dialogs. alert (ResultString) ; {
isValid
Функция: URL. isValid (urlString);
Описание: Возвращает логическое значение true, если синтаксис входной URL-строки корректен и false, если синтаксис не корректен.
Аргумент: urlString = Строка Возвращаемое значение: Логическое значение
Пример: Следующий сценарий использует функцию
URL. isValid(), чтобы установить являются ли строки "waplib.com" и "" корректными URL- строками:
extern function IsValidTest ()
var Argumentl = "waplib.com"; , var Resultl = URL.isValid(Argumentl);
var Argument2 = ""; var Result2 = URL.isValid(Arguments);
var ResultString = "URL.isValid()" + "\r\r" +
"isValid(waplib.com) = " + Resultl + "\r" + "isValid() = " + Result2;
Dialogs.alert(ResultString);
resolve
Функция: URL.resolve(baseURL, embeddedURL);
Описание: Возвращает абсолютный URL, получаемый из
указываемого базового URL и вложенного URL.
При обнаружении некорректного синтаксиса URL функция возвращает значение invalid.
Аргументы: baseURL = Строка
embeddedURL = Строка
Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию URL.resolve{) для объединения двух аргументов в абсолютный URL:
extern function ResolveTest()
{
var Argumentl = ""; var Arguments = "Demos.wml";
var Result = URL.resolve(Argumentl, Arguments);
var ResultString = "URL.resolve()" + "\r\r" +
"The absolute URL is " + Result;
Dialogs.alert(ResultString);
}
unescapeString
Функция: URL.unescapeString(string);
Описание: Возвращает новую строку, получаемую из входной строки string путем замены всех ESCAPE- последовательностей (таких, как те, что получаются с помощью функции URL.escapeString) на символы, представляемые этими ESCAPE-
последовательностями. Если строка содержит
символы, которые не входят в набор знаков US- ASCII, функция возвращает значение invalid.
Аргумент: string = Строка к Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
URL.unescapeStringO для декодирования
строки "%40%26%23": extern function UnescapeStringTest()
{
var Argument = "%40%26%23";
var Result = URL.unescapeString(Argument);
var ResultString = "URL.unescapeStringO" + "\r\r" +
"unescapeString(%40%26%23) = " + Result;
Dialogs.alert(ResultString);
}
Библиотека WMLBrowser Библиотека WMLBrowser
Библиотека WMLBrowser содержит набор функций, предназначенных для доступа к составляющим информационного наполнения устройства (device context).
getCurrentCard
Функция: WMLBrowser. getCurrentCard ();
Описание: Возвращает URL карты, выполняемой в текущий
момент времени.
Возвращаемое значение: Строка
/ Пример: Следующий сценарий использует функцию
WMLBrowser.getCurrentCard() для получения URL карты, выполняемой в текущий момент времени:
extern function GetCurrentCardTest()
{ var Result = WMLBrowser.getCurrentCard();
var ResultString = "WMLBrowser.getCurrentCard()" + "\r\r" "The current card is " + Result;
Dialogs.alert(ResultString); ....
}
getVar
Функция: WMLBrowser. getVar (name);
Описание: Возвращает значение переменной с указанным именем. Если переменная не определена, функция возвращает пустую строку. Если синтаксис имени переменной некорректен, функция возвращает значение invalid.
Аргумент: name = Строка
Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
WMLBrowser. getVar () для получения значения
переменной name, которая была определена в WML-файле, вызвавшем сценарий:
extern function GetVarTestO { var Argument = "Name";^' var Result = WMLBrowser.getVar(Argument);
var ResultString = "WMLBrowser.getVar()" + "\r\r" +
"The name is " + Result;
Dialogs.alert(ResultString);
Go
Функция: WMLBrowser.go(url); Описание: Указывает, что должна загружаться и выполняться WML-страница по указанному URL WML- страница не загружается до тех пор, пока не за-
кончится работа сценария. Функция возвращает
Пустую строку
Функции WMLBrowser. go О и WMLBrowser .prev() замещают друг друга. Прежде чем сценарий закончит свою работу, каждая из функций может вызываться по нескольку раз. Однако сценарий выполняет только последний вызов. Если по- слeдний вызов устанавливает URL на пустую
строку, все запросы отменяются, и загрузка но вой карты или WML-страницы не выполняется. Аргумент: url = Строка Возвращаемое значение: Строка или значение invalid
Пример: Следующий сценарий использует функцию
WMLBrowser. go () для запуска WML-страницы getvar.wml:
extern function GoTest()
{
var Argument = "getvar.wml";
var Result = WMLBrowser.go(Argument);
var ResultString = "WMLBrowser.go()" + "\r\r" + "Ready to start " + "\r" + "getvar.wml ";
Dialogs.alert(ResultString); }
prev
Функция: WMLBrowser. prev ();
Описание: Указывает, что должна загружаться и выпол няться предыдущая карта. Карта не загружается
ДО тех пор, пока сценарий не завершит свою
работу. Функция возвращает пустую строку.
Функции WMLBrowser. go () и WMLBrowser. prev ()
замещают друг друга. Прежде чем сценарий
закончит свою работу, каждая из функций может
вызываться по нескольку раз. Выполняется
только последний вызов. Если последний вызов
устанавливает URL на пустую строку, все запросы
отменяются, и загрузка новой карты или WML-
страницы не выполняется.
Возвращаемое значение: Строка
Пример: Следующий сценарий использует функцию
WMLBrowser.prev() для,возврата на предыдущую
WML-страницу, которая в данном случае
представляет собой WML-страницу из примера для функции WMLBrowser. go:
extern function PrevTestO
{
var Result = WMLBrowser.prev();
var ResultString = "WMLBrowser.prev()" + "\r\r" + "Ready to go back one deck ";
Dialogs.alert(ResultString);
}
setVar
Функция: WMLBrowser.setVar(name, value);
Описание: Присваивает задаваемое значение value переменной с указываемым именем name и возвращает логическое значение true, если операция выполнена успешно, и значение false, если операция закончилась неудачей. Если синтаксис имени переменной или указываемое значение
некорректны, функция возвращает значение
invalid.
Аргументы: name = Строка
value = любое значение
Возвращаемое значение: Логическое значение или значение invalid
Пример: Следующий сценарий использует функцию
WMLBrowser. setVar () для определения переменной Name в WML-странице, которая вызвала сценарий:
extern function SetVarTestO
{ var Argumentl = "Name";
var Arguments = "Krissy";
var Result = WMLBrowser. setVar (Argumentl, Argument2) ;
var ResultString = "WMLBrowser. setVar ()" 4- "\r\r" "Setting Name to Krissy";
Dialogs, alert (Resul tString) ; )
Логические операции Логические операции
Язык WMLScript поддерживает следующие базовые логические операции:
Оператор
Операция
&&
логическое "И" (AND)
II
логическое "ИЛИ" (OR)
!
логическое отрицание (NOT)
Оператор логического "И" (AND) вычисляет первый операнд и проверяет результат. Если получено логическое значение true (Истина), то результат операции будет равен значению второго операнда. Если получено логическое значение false (Ложь) или недопустимое значение, то результат будет равен логическому значению false или значению invalid (Недопустимое значение), и второй операнд не будет вычисляться. Также оператор логического "ИЛИ" (OR) вычисляет первый операнд и проверяет результат. Если получено логическое значение true или недопустимое значение, то результат операции будет равен логическому значению true или invalid. Если получено логическое значение false, то результат операции будет равен
значению второго операнда.
Оператор Isvalid Оператор Isvalid
Оператор isvalid возвращает логическое значение true, если тип выражения относится к допустимым типам и false, если выражение имеет недопустимый тип,
Оператор Typeof Оператор Typeof
Язык WMLScript поддерживает следующие базовые типы данных: Boolean (логические значения), integer (целые числа), floating point (числа с плавающей запятой), string (символьные строки), и invalid (недопустимые значения). Оператор Typeof возвращает целочисленное значение, указывающее тип данного выражения. Оператор Typeof может принимать следующие значения:
Тип
Возвращаемое значение
Integer (целое число)
Floating point (число с плавающей запятой)
1
String (строка)
2
Boolean (логическое значение)
3
Invalid (недопустимое значение)
4
Операторы присваивания Операторы присваивания
Операторы присваивания назначают переменным их значения. Язык описания сценариев WMLScript поддерживает следующие операторы присваивания:
Оператор
Операция
=
присваивание
+=
сложение чисел или объединение символьных строк и присваивание
-=
вычитание и присваивание
*=
умножение и присваивание
/=
деление и присваивание
div=
целочисленное деление и присваивание
%=
получение остатка и присваивание (знак результата сов- падает со знаком делимого)
"=
поразрядное смещение влево и присваивание
"=
поразрядное смещение вправо и присваивание
>"=
поразрядное смещение вправо с заполнением нулями и присваивание
&-
поразрядная операция "И" (AND) и присваивание
/\=
поразрядная операция "исключающее ИЛИ" (XOR) и присваивание
\-
поразрядная операция "ИЛИ" (OR) и присваивание
Операторы сравнения Операторы сравнения
Язык WMLScript поддерживает следующие базовые операции сравнения:
Оператор
Операция
<
меньше
<- .,>
меньше или равно
==
равно
>=
больше или равно
>
больше
! =
не равно
Логическое значение true больше логического значения false.
Если один из операндов имеет недопустимое значение, результат сравнения принимает значение invalid.
Строковые операторы Строковые операторы
Язык WMLScript поддерживает объединение строк в качестве встроенной операции. Операторы "+" и "+=", используемые с символьными строками, выполняют объединение символьных строк. Выполнение других операций со строками реализуется с помощью функций библиотеки String.
Условный Оператор Условный Оператор
Язык WMLScript поддерживает условный оператор, который включает в свой состав три операнда, как показано ниже:
Result = argl ? arg2 : агgЗ;
Если первый операнд (argl) имеет значение true, то данный оператор присваивает результату (Result) значение второго операнда (arg2). Если первый операнд (argl) имеет значение false или недопустимое значение, то оператор присваивает результату (Result) значение третьего операнда (аrgЗ).
Бизнес в интернете: Сайты - Софт - Языки - Дизайн