パラメータと結果
メッセージは、メッセージ名という単語で識別されますが、_パラメータ_の形で追加情報を含めることもできます。パラメータは、コマンドや関数に渡される値です。これらのコマンドや関数はカスタムハンドラであり、呼び出しスクリプト内に存在するか、別のスクリプト やヘルパースイート内に存在することがあります。ハンドラの宣言やパラメータの受け取りについての詳細は、ハンドラをご覧ください。
パラメータの2つの渡し方:シーケンシャルと名前付き
コマンドや関数を呼び出すときにパラメータを渡す方法は2つあります:シーケンシャル(順序通り)と名前付きです。シーケンシャルパラメータは、想像通りの順序で渡されます。名前付きパラメータは、_key:value_のペアのプロパティリストとして渡され、各キーが受け取り側のパラメータの名前と一致するように使用されます。これら2つのパラメータの渡し方は組み合わせることもできます。
呼び出しコマンドや関数は、呼び出されるハンドラと同じスクリプト内にあることも、異なるスクリプト内にあることもあります。呼び出しは多くの場合、別のスクリプト内にあり、これはテストのモジュラ化に有用です。テスト構造には、様々なタスクを実行する多種多様なハンドラを含む他のスクリプトへのいくつかの異なる呼び出しを含むプライマリスクリプトが含まれることがあります。
受け取りハンドラが期待する任意のパラメータにデフォルト値を事前に定義することに興味がある場合は、デフォルトのパラメータ値を参照してください。パラメータを受け取るハンドラの作成については、ハンドラを参 照してください。
シーケンシャルパラメータ
シーケンシャルパラメータの渡し方
シーケンシャルパラメータを渡すためには、コマンド名の後にパラメータ値を列挙し、コンマで区切るか、関数を呼び出すときに関数名の後の括弧内に含めます(単一のパラメータ値が渡されるときの関数の他のバリエーションもあります - 関数の呼び出しを参照)。
コマンド put "Hello, World!"は、"Hello, World!"という文字列を単一のパラメータとしてputメッセージと共に送信します。複数のパラメータを送信するには、それらをコンマで区切って列挙します。
例:コマンドでシーケンシャルパラメータを渡す
この例では、数値31、テキストgreen、変数styleの3つのパラメータをシーケンシャルパラメータとしてdoSomethingImportantコマンドに渡します:
doSomethingImportant 31, "green", style
コマンドのパラメータは括弧で囲むべきではありません(単一のパラメータとしてリストを渡す意図がある場合を除く)。
例:関数でシーケンシャルパラメータを渡す
関数呼び出しメッセージにパラメータを含めるには、関数名の後の括弧内にそれらを列挙します:
put roundToNearest(salary/12, 0.01) into monthlyPayTothePenny
例:空のパラメータを供給する
2つのコンマが連続すると空のパラメータを意味し、リストの最後のコンマは無視されるので、次の例では3つのパラメータ("silverBar"、""、16)が渡されます:
get verifyQuantity("silverBar",,16,)
シーケンシャルパラメータの割り当て
パラメータが順序に従って渡されると、その値はハンドラ宣言の一部であるパラメータ変数に(同じ順序で)割り当てられます。呼び出し元がパラメータ変数の数よりも少ない値を渡すと、割り当てられなかったものはそのデフォルト値(または空)を受け取ります。呼び出し元がより多くの値を渡す場合、ハンドラはそれらにparameterList関数、paramCount関数、param関数を使用してアクセスできます。
例:
例えば、以下のように宣言されたcastSpellハンドラを考えてみましょう。
to castSpell spellName, duration, potency -- "to"を使って、この行はcastSpellハンドラを宣言し、3つのパラメータ変数を定義します
//魔法を唱えるためのことをします:
Put duration and potency into Cauldron
Stir Cauldron -- 魔法を実行するカスタムコール
Log "Alakazam!: " & spellName -- 魔法が唱えられたことを確認するメッセージ
end castSpell
ここで、spellName、duration、potencyは、ハンドラが呼び出されたときに渡されるパラメータの値を受け取るパラメータ変数です。
上記のハンド ラがコマンドcastSpell "sleep", 12 hours, "deep"を使って呼び出された場合、スクリプト全体は以下のようになるでしょう。
castSpell "sleep", 12 hours, "deep" --これは呼び出しコマンドで、3つのパラメータを順序に従って渡します
to castSpell spellName, duration, potency --順序に従って渡されたパラメータは、受け取られてその順序に従って対応するパラメータ変数に挿入されます
//魔法を唱えるためのことをします:
Put duration and potency into Cauldron
Stir Cauldron -- 魔法を実行するカスタムコール
Log "Alakazam!: " & spellName -- 魔法が唱えられたことを確認するメッセージ
end castSpell