これは RuntimeRevolution 1.1.1 のヘルプにある文書を邦訳したものです。この文書の文責はUDIにあり、またUDIはこの文書についての一切の債務を負いません。 間違いがありましたら eudio@chabashira.co.jp までお知らせ下さい。この文書は必要と思われる時に適宜アップデートされます。
Help -> Revolution Documantation -> Development Guide -> Values & Properties -> About... containers, variables, and sources of value
About containers, variables, and sources of value
コンテナ、変数、値のソース
==============
参照:
--------------
About properties, custom properties, and property sets, Operator Precedence Reference, How to include a comma in a parameter, How to include a quote in an expression, How to put text into a field, How to search a container, Why does a variable lose its value?, [] keyword, constant command, delete variable command, get command, global command, local command, put command, variableNames function
値のソースとは、ステートメントの中で使える、データへの参照方法のことである。
このトピックでは、Transcript ステートメントの中で使える値のソースの種類、値を保持するために変数を使う方法、1つ以上の値を入れる配列の作り方、そして URL からデータを得る方法について解説する。
このトピックを充分に理解するには、オブジェクトの作り方と簡単なスクリプトの書き方を知っている必要がある。またハンドラとは何か、パラメータとは、変数とは何かについて、基本的な知識が必要である。もし 'Getting Started' チュートリアルが済んでいるなら、このトピックを理解するための知識は充分に得られている。
Contents:
What is a Container?
Buttons and Fields
Images
Variables
Arrays
URLs
Other Sources of Value
What is a Container?
コンテナとは何か?
コンテナとはデータを保持するものであり、そのデータは変更したり、取り出すことが出来る。Revolution には、フィールド、ボタン、イメージ、変数、パラメータ、URL の、6つのタイプのコンテナがある。
コンテナにデータを入れたり、コンテナからデータを取り出すことが出来る。またチャンク表現を使って、コンテナの一部を指定することも出来る。(チャンクについては、このセクションの 'Chunk Expressions' トピックを参照のこと)
Buttons and Fields
ボタンとフィールド
ボタンオブジェクトとフィールドオブジェクトは、どちらもテキストを持つことが出来る。この2つのオブジェクトは、違った形でデータをスクリーンに表示する。
フィールドの内容は目に見えるテキストであり、ユーザーはそれを編集することが出来る。(フィールドの lockText プロパティが false である場合) ハンドラやメッセージボックスからテキスト(や、チャンクを使ってその一部)にアクセス出来、put コマンドを使ってテキストやその一部を変更することが出来る。ここにあるサンプルは、フィールドのテキストを変更するものである:
put "ABC" into field "My Field" -- 内容を入れ替える get char 1 of field "My Field" -- "A" が得られる put "Z" into char 2 of field "My Field" -- "B" を入れ替える put "DEF" after field "My Field" -- 追加する get field "My Field" -- "AZCDEF" が得られる put empty into field "My Field" -- フィールドを空にするフィールドの参照や、フィールドの一部を表すチャンク表現を使って、他の Transcript で必要としている文字列を、指定することが出来る。
put "ABC" into button "Holder" get the text of button "Holder" -- "ABC" を表す set the text of button "Holder" to "XYZ" -- 内容を変更する get char 2 of button "Holder" -- "Y" が得られるボタンやフィールドの内容は、スタックを保存する時に保存される。次回スタックを開いた時、これらの内容はそこに現れる。
put field 1 into field 2例えばフィールド1の最初のワードがボールドに設定されていた場合、フィールド2の最初のワードは、ボールドではない同じテキストになる。
set the htmlText of field 2 to the htmlText of field 1
put image "Original" into image "Working Copy"image オブジェクトを削除せずに、image からピクチャーデータを削除するには、このようにする:
put empty into image "Working Copy"
put "Your Message Here" into myVariable put "Hello Again!" into line 2 of myVariable put space after char 2 of myVariable他の Transcript 表現で必要になる文字列を得るために、変数の参照や、変数の一部を指すチャンク表現を使うことが出来る。
local someLocalVar = 3もし変数の初期値を指定しなければ、その変数は empty として作られる。
local mySharedVariableもし local コマンドをハンドラの中で使うと、それはローカル変数になる。もしそのスクリプト内の、別のハンドラからも使いたいなら、スクリプトローカル変数を作りなさい。
global someGlobalSettingglobal コマンドはハンドラの中でも外でも使うことが出来る。グローバル変数を使う全てのハンドラは、そのハンドラの中でグローバル変数を定義する必要がある。そしてグローバル変数を使う文よりも前に宣言文を置く必要がある。 global 宣言の無いハンドラで同じ名前の変数を使うと、グルーバル変数とは無関係の、同名のローカル変数が作られる。(訳注:ハンドラの外で global 宣言をした場合、そのオブジェクト内の全てのハンドラで global 宣言をしたのと同じ効果が得られます)
get $LOGNAMECommand-line argument variables:
myrevapp -h nameグローバル変数 $0 には 'myrevapp'(アプリケーション名)が入り、$1 には '-h'、$2 には 'name' が入る。
put "A" into myList["firstLetter"] put "B" into myList["secondLetter"] put "C" into myList["thirdLetter"] get myList["firstLetter"] -- "A" が得られる変数 'myList' には3つの要素がある。ひとつめの要素は 'firstLetter' と名付けられており、アルファベットの A が入っている。2つめの 'secondLetter' には B、3つめの 'thirdLetter' には C が入っている。
get the keys of myList -- 得られる値は: firstLetter secondLetter thirdLetter変数を削除するのではなく、要素をひとつだけ削除したい場合は、キーを指定して delete variable コマンドを使用する:
delete variable myList["secondLetter"]Multi-dimensional arrays:
put line 1 of field "New Content" into myArray[1,"new"] put line 2 of field "New Content" into myArray[2,"new"] put line 1 of field "Old Content" into myArray[1,"old"] put line 2 of field "Old Content" into myArray[2,"old"]この文は変数に4つの要素を作る。各要素は2つのキーを使って指定する。
put URL "http://www.example.org/" into field "Page"file:
put field "Stuff" into URL "file:testfile"binfile:
put URL "binfile:beachball.gif" into image "Beachball"resfile:
put myBinaryData into URL "resfile:/Disk/Resources"URL による file、binfile、resfile の指定では、Transcript で使われるファイルパスと同じ構文を使用する。ファイルパスについてのより詳しい情報は、このセクションにある 'Filename Specifications and File Paths' トピックを参照しなさい。
get field "Favorites" of card 1 of stack "Out There" \ of URL "http://www.example.net/stacks/favorites.rev"
put the showBorder of button 1 into thisBorderグローバルプロパティは、特定のオブジェクトに依存しないプロパティである。グローバルプロパティ名に 'the' を付けて、その値を参照することが出来る:
get the accentColorプロパティについてより詳しい情報は、このセクションの 'Properties, Custom Properties, and Property Sets' トピックを参照しなさい。
get the date put the cos of myAngle into field "Answer"'the' を使った書式は、組み込みの関数にしか使うことは出来ない。また2つ以上のパラメータを持つことは出来ない。
put time() into currentTime get average(22,33,52)ふたつめの書式は組み込み関数にも使うことが出来、またカスタム関数を呼ぶための唯一の方法でもある。カスタム関数について更に詳しい情報は、このセクションの 'Commands and Functions' に書かれている。
put "Hello World!" into field 1 get 1 + 2 + it put 1 - 4.234 into field "Result"複数のワードや、Transcript 言語で予約されているワードを含むリテラル文字列は、ダブルクォートで囲わなければならない。予約語を含まないリテラル文字列(や数字など)はクォートで囲む必要は無いが、その文字列が将来の Transcript でプロパティなどに使われる可能性もあるので、括弧で囲っておくことを推奨する。 explicitVariables プロパティを true にしておけば、クォートで囲われていない文字列があった時に、スクリプトのコンパイルでスクリプトエラーが起きる。