これは 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 で必要としている文字列を、指定することが出来る。

 ボタンの内容は、ボタンの style プロパティが menu に設定されている場合は、メニュー項目のリストとして使われる。ボタンがメニューでない場合はその内容はスクリーンに表示されないが、フィールドと同じようなコマンドを使って、そこにアクセスしたり、変更することは出来る。

 フィールドやボタンの内容は、そのオブジェクトの text プロパティでもある。 text プロパティとしてその内容全体を変更したり、内容全体にアクセスすることが出来る:
  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" が得られる
 ボタンやフィールドの内容は、スタックを保存する時に保存される。次回スタックを開いた時、これらの内容はそこに現れる。

A note about text styles:
テキストスタイルについての注意:
 フィールドはテキストスタイルを保持するが、フィールドをコンテナとして扱う場合は、テキストの style、size、font は保持されない。例えばこのコマンドはフィールドのテキストフォーマットを維持しない:
  put field 1 into field 2
 例えばフィールド1の最初のワードがボールドに設定されていた場合、フィールド2の最初のワードは、ボールドではない同じテキストになる。

 フィールド(やフィールドのチャンク)間でスタイル情報を維持したままテキストを移動するには、htmlText プロパティを利用する:
  set the htmlText of field 2 to the htmlText of field 1

Images
イメージオブジェクト
 Image は、表示されているピクチャーデータをバイナリデータとして持っている。もし image に入っているデータのフォーマットを理解しているなら、それを分析したり、put コマンドを使ってデータの一部を変更することが出来る。

 ひとつの image から他の image にピクチャーを移動するには、このような文を使う:
  put image "Original" into image "Working Copy"
 image オブジェクトを削除せずに、image からピクチャーデータを削除するには、このようにする:
  put empty into image "Working Copy"

Variables
変数
 変数とは、目には見えないが、ハンドラやメッセージボックスから参照することが出来る、あなたが作るコンテナである。変数には任意のデータを入れておくことが出来、必要な時にいつでも取り出すことが出来る。

 変数に他のコンテナの内容を入れるには、put コマンドを使う:
  put "Your Message Here" into myVariable
  put "Hello Again!" into line 2 of myVariable
  put space after char 2 of myVariable
 他の Transcript 表現で必要になる文字列を得るために、変数の参照や、変数の一部を指すチャンク表現を使うことが出来る。

 変数には、local、script local、global の3つのタイプがある。これらのタイプの違いは、その値をいつまで保持するかということと、そのスコープである。どの変数も、アプリケーションを終了すると消えて無くなる。フィールドやボタンやイメージと違って、変数の内容はスタックに保存されない。

Local variables:
ローカル( local )変数:
 ローカル変数とは、その変数が作られたハンドラの中だけで有効な変数である。ローカル変数はハンドラの実行を終了するとすぐに消えて無くなる。次回そのハンドラを実行した時には、その変数は前回の状態を記憶しておらず、ゼロの状態から始まる。

 ローカル変数は明示的に作る必要は無い。 put コマンドで存在しない変数名を使うと、その変数はローカル変数として作られる。

 またハンドラ内で local コマンドを使って、ローカル変数を明示的に作ることも出来る。ここで作られるのはローカル変数である。 local コマンドを使うと、その変数の初期値を指定するオプションを利用することが出来る:
  local someLocalVar = 3
 もし変数の初期値を指定しなければ、その変数は empty として作られる。

Script local variables:
スクリプトローカル( Script local )な変数:
 スクリプトローカル変数は、そのオブジェクト内のどのハンドラでも有効な変数である。ローカル変数と違って、スクリプトローカル変数は、ハンドラの実行を終了しても消えて無くならない。同じスクリプト内の任意のハンドラからスクリプトローカル変数を参照することが出来るが、他のオブジェクトのスクリプトにあるハンドラからは参照することは出来ない。

 スクリプトローカルの変数を作るには、ハンドラの外で local コマンドを使う:
  local mySharedVariable
 もし local コマンドをハンドラの中で使うと、それはローカル変数になる。もしそのスクリプト内の、別のハンドラからも使いたいなら、スクリプトローカル変数を作りなさい。

 スクリプトローカル変数はスクリプトがコンパイルされる時に消えて無くなる。

Global variables:
グローバル( global )変数:
 グローバル変数は、スタック内のどのハンドラからも利用できる変数である。グローバル変数はローカル変数と違って、その変数を作ったハンドラの実行が終わっても消えて無くならない。グルーバル変数はスクリプトローカル変数と違って、どのオブジェクトのスクリプトのハンドラからでも利用することが出来る。

 グローバル変数を定義するには、global コマンドを用いる:
  global someGlobalSetting
 global コマンドはハンドラの中でも外でも使うことが出来る。グローバル変数を使う全てのハンドラは、そのハンドラの中でグローバル変数を定義する必要がある。そしてグローバル変数を使う文よりも前に宣言文を置く必要がある。 global 宣言の無いハンドラで同じ名前の変数を使うと、グルーバル変数とは無関係の、同名のローカル変数が作られる。(訳注:ハンドラの外で global 宣言をした場合、そのオブジェクト内の全てのハンドラで global 宣言をしたのと同じ効果が得られます

 グローバル変数はアプリケーションを終了した時や、delete variable コマンドを使った時に消えて無くなる。存在するグローバル変数のリストを得るには、globalNames 関数を使う。

Unix environment variables:
Unix の環境変数:(訳注:済みません。Unix のこと分からないのでそのまま載せます)
On Unix systems, a variable whose name begins with the $ character is exported to the application's environment, and is inherited by processes started up by the shell function or the open process command.

You can access Unix environment variables by prepending the $ character to the environment variable's name. For example, the following statement gets the contents of the LOGNAME environment variable:
  get $LOGNAME
Command-line argument variables:
コマンドラインの引数変数
 コマンドラインからアプリケーションを起動した場合( OS X、Unix、Windows )、コマンド名がグローバル変数 $0 に保存され、それに続く引数変数が $ で始まる数字の変数に保存される。例えばシェルコマンドからアプリケーションが起動された場合:
  myrevapp -h name
 グローバル変数 $0 には 'myrevapp'(アプリケーション名)が入り、$1 には '-h'、$2 には 'name' が入る。

Variable names:
変数名:
 変数の名前は、1つのワードか、アルファベット、数字、アンダースコア( _ )の組み合わせで構成されている必要がある。最初のキャラクタはアルファベットかアンダースコアでなければならない。

 変数にカスタムプロパティと同じ名前を付けることは避けなさい。カスタムプロパティを参照しようとした時、同じ名前の変数があると、Revolution は同名の変数の中身を参照する。一般的に、これは予想外の結果をもたらすだろう。

 変数の名が'gRev' で始まっているグローバル変数は、Revolution の開発環境が予約している。


Arrays
配列
 配列とは、ひとつのコンテナに入れられた、値のリストである。リストの各要素は名前を持っており、それをキー( key )と呼ぶ。どのタイプの変数も、配列として使うことが出来る。

 変数名を使って配列の要素にアクセスするには、ブラケット(角括弧)にキーを入れる:
  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 が入っている。

 コンテナに入れられるものなら何でも要素の中に入れることが出来る。アルファベット、文字列、数値、バイナリデータ。

 変数を配列として扱うための特別な宣言は無い。何かを変数の要素として入れるだけで、変数は配列になる。(もし既に変数が配列でないデータを持っていた場合は、何かを要素として入れた時点で、元のデータは消える) もしキーを指定せずに全体の値を得ようとすると、empty が返ってくる。

 配列の要素のリストを得るには keys 関数を使う:
  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つのキーを使って指定する。

 多次元配列の各キーはカンマで区切る。カンマとキーの間にスペースキャラクタを置いても構わない。


URLs
 URL は、ファイルや、インターネットのリソースを指定するものである。 Revolution は URL キーワードでこれらのファイルをサポートする:

http:
http は、ウェブサーバのページを指す:
  put URL "http://www.example.org/" into field "Page"
file:
file は、現在のシステム上にあるファイルを指す:
  put field "Stuff" into URL "file:testfile"
binfile:
binfile は、現在のシステム上にあるファイルをバイナリデータとして指定する:
  put URL "binfile:beachball.gif" into image "Beachball"
resfile:
resfile は、Mac OS ファイルのリソースフォークを指定する:
  put myBinaryData into URL "resfile:/Disk/Resources"
 URL による file、binfile、resfile の指定では、Transcript で使われるファイルパスと同じ構文を使用する。ファイルパスについてのより詳しい情報は、このセクションにある 'Filename Specifications and File Paths' トピックを参照しなさい。

 URL は他のコンテナと同じように扱うことが出来る。 URL の内容を get したり、任意の表現の中で URL を使うことが出来る。また http 以外の任意の URL に、データを put することが出来る。(つまり URL で扱えるものは、現在のシステム上のファイルと同じように取り扱うことが出来る)

 URL がスタックファイルを指している場合は、オブジェクトの参照式を使って、そのスタック中の任意のコンテナオブジェクト(ボタン、フィールド、イメージ)を参照することが出来る。
  get field "Favorites" of card 1 of stack "Out There" \
     of URL "http://www.example.net/stacks/favorites.rev"

Other Sources of Value
その他の「値のソース」
 コンテナに加えて、Transcript では、プロパティや、関数コールや、リテラル文字列や、定数を、値のソースを使うことが出来る。これらの値のソースは、表現式が作られた時に、ブロックを形成する。

Properties:
プロパティ:
 プロパティとは、オブジェクトの属性である。オブジェクトの参照と名前を使って、オブジェクトのプロパティ値を得ることが出来る:
  put the showBorder of button 1 into thisBorder
 グローバルプロパティは、特定のオブジェクトに依存しないプロパティである。グローバルプロパティ名に 'the' を付けて、その値を参照することが出来る:
  get the accentColor
 プロパティについてより詳しい情報は、このセクションの 'Properties, Custom Properties, and Property Sets' トピックを参照しなさい。

Function calls:
関数コール:
 関数コールは関数名と、関数が必要とするパラメータから構成される。

 関数コールには2つの書式がある。ひとつめの書式は、関数名に 'the' を付け、関数名とパラメータの間に 'of' を置く書式である:
  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' に書かれている。

Literal strings:
リテラル文字列:
 リテラル文字列とは、そのキャラクタ自体が値となる文字列である。文字列が数字の場合は、その値は数値である。
  put "Hello World!" into field 1
  get 1 + 2 + it
  put 1 - 4.234 into field "Result"
 複数のワードや、Transcript 言語で予約されているワードを含むリテラル文字列は、ダブルクォートで囲わなければならない。予約語を含まないリテラル文字列(や数字など)はクォートで囲む必要は無いが、その文字列が将来の Transcript でプロパティなどに使われる可能性もあるので、括弧で囲っておくことを推奨する。 explicitVariables プロパティを true にしておけば、クォートで囲われていない文字列があった時に、スクリプトのコンパイルでスクリプトエラーが起きる。

 数字の最初の2文字が 0x である場合、それは16進数として解釈される。もし convertOctals プロパティが true にセットされていれば、最初の文字が 0 である数字は、8進数として解釈される。

Constants:
定数:
 定数とは、値に名前を付けたものである。 Transcript 言語は return や space や comma など、いくつかの定数を持っている。これらはスクリプトの中で特定のキャラクタを表す特別な文字列であり、表現式の中でこれらの単語がそのまま使われるわけではない。

 constant コマンドを使って、定数を定義することが出来る。変数と同じように、ローカル定数や、スクリプトローカル定数として定義することが出来る。

邦訳/文責:UDI
2003.01.19

inserted by FC2 system