パラメータと結果
パラメータとは、コマンドまたは関数に渡される値のことをいいます。コマンドを呼び出す際に、コマンド名の後にコンマで区切ったパラメータを列記することによって、そのコマンドにパラメータを渡すことができます。
doSomethingImportant 31,"green",style
上の例では、3つのパラメータ(数値の31、テキストのgreen、変数のstyle)をdoSomethingImportantコマンドに渡しています。同様に、呼び出す関数名の後ろの丸括弧内にパラメータを列記することで、パラメータを関数にも渡すことができます。連続する2つのコンマはemptyパラメータを表しており、リストの終わりの最後のコンマは無視されます。以下の例では、次の3つのパラメータ(「silverBar」、「」、「16」)が渡されます 。
get verifyQuantity("silverBar",,16,)
パラメータとして変数を渡す場合はその値のみが渡され、コンテナの参照で説明するように、参照によって渡す場合を除き、ローカル変数のコンテンツを変更できなくなります。
as parametersを指定すると、個々のパラメータを渡す代わりに、リスト内に含まれるすべての値を渡すことができます。これは単一エンティティとしてリストを渡すのではなく、値を個別に渡します。
updateAllItems thingsToBeUpdated as parameters
以下で説明するように、ハンドラは受け取るパラメータを宣言して使用し、結果を提供することができます。
params宣言
振る舞い
スクリプトのinitialハンドラに対して、名前付き入力パラメータを宣言します。params宣言は、スクリプトの最初のステートメントで行う必要があります。これで、入力パラメータに名前が割り当てられます。以下のように、パラメータにはparam、paramcountおよびparams関数 を利用してアクセスすることも可能です。
例
params width,height
技術トピック |
構文:params paramName1 {, paramName2 ...} |
param関数
振る舞い
パラメータリスト内の通常の位置で指定される、現在のハンドラに渡されるパラメータのうちの1つの値を返します。宣言した名前付きパラメータの数にかかわらず、ハンドラは任意の数の入力パラメータを受け取る場合があります。param関数を使用すると、それらの値を回収できます。
例
get the param of 1 -- 最初のパラメータを得ます
put param(0) -- ハンドラ名を示します
技術トピック |
構文:param of numExpr param( numExpr ) |
paramCount関数
振る舞い
現在のハンドラに渡されるパラメータの数を返します。
例
repeat with n=1 to the paramCount
put "Parameter " & n & " is " & param(n)
end repeat
技術トピック |
構文:paramCount paramCount() |
params関数
振る舞い
現在のハンドラに渡されるすべてのパラメータ値の前のハンドラ名で構成されるテキスト文字列を返します。リスト以外のパラメータ値とプロパティリストは、それぞれ引用符で囲みます。
例
put the params -- 次のように示されます:test "John Doe","27",("JD","Bud")
技術トピック |
構文:params params() |
parameterList関数
振る舞い
現在のハンドラに渡されたすべてのパラメータを含むリストを返します。渡されたパラメータを使用して作業するこの方法は、paramCountやparam関数を使用するよりも便利な場合があります。
例
repeat with each item of the parameterList
add it to total
end repeat
return func(the parameterList as parameters)
-- paramsをfuncに渡します
技術トピック |
構文:parameterList parameterList() |
messageType関数
振る舞い
「Command(コマンド)」や「Function(関数)」などのように、処理されるメッセージのタイプを指定する値を返します。この関数を使用して汎用的な(「処理用の」)ハンドラを有効化し、呼び出し方法に応じて異なるアクションをとることが可能になります。返される可能性のあるその他の値には、「GetProp」や「SetProp」などがあります。
例
if the messageType is "Function" then return theAnswer
技術トピック |
構文:messageType messageType() |
returnコマンド
振る舞い
関数ハンドラ内で使用する場合は関数の結果を返し、メッセージハンドラ内で使用する場合はresultを設定します。
例
return pi*diameter
技術トピック |
構文:return {式} |
returnステートメントは、現在のハンドラの実行を終了します。式を与えていない場合は、empty が返されます。 |
result関数
振る舞い
前のコマンドで設定された結果(存在する場合)を返します。例えば、ファイル上で作動するコマンドの多くは、成功するとresultをemptyに設定し、失敗すると失敗した箇所を示すメッセージに設定します。
例
if the result is not empty then throw "Error", the result
技術トピック |
構文:result result() |
各ステートメントの冒頭で、resultは前のステートメントで生成した結果に設定されます。そのため、演算の結果を判断するには、直後に実行するステートメントの一部として本関数を呼び出す必要があります。 |
returnステートメントを(関数ではなく)コマンドとして呼び出されたハンドラの一部として実行する場合は、その戻り値は、そのハンドラを呼び出したスクリプト内でresultを設定します。 |
一部の状況において、次のコマンドはresultをempty以外の値に設定します。answer、ask、convert、copy、create、delete、move、open、post、read、rename、replace、seek、shell。また、いつファイルまたはURLにアクセスするかを設定することもできます。結果を検証して前のコマンドが成功したかどうかを判断する場合は、一般的に、結果に含まれる特定の語を検索するよりも、結果がemptyかどうかをチェックする方が賢明です。これは、エラーメッセージの正確な言い回しが将来的なリリースにおいて変更になる可能性があるためです。 |
throwExceptionResultsグローバルプロパティがtrueに設定されている場合は、コマンドがresultを例外オブジェクトに設定するたびに(ほとんどのエラー状況で発生)、上述したように本関数を介して利用できるようになるのではなく、例外が投げられます。 |
empty以外の結果を設定するたびに、その結果はresultHistoryグローバルプロパティに挿入されます。これにより、スクリプトが前のステートメントから結果の値を回収することが可能になります。ただし、empty値は含まれないため、結果を特定のステートメントと一致させるには、細心の注意を払う必要があります。resultHistoryLimitグローバルプロパティで指定したように、結果の制限数は維持されます。この制限値に達すると、古い結果が破棄されます。 |
handlerNames関数
振る舞い
オブジェクトのスクリプト内の各ハンドラの名前のリストを返します。ハンドラの表記順は定義されていません。
例
put handlerNames of Account
技術トピック |
構文:handlerNames of anObject handlerNames(anObject) |