おそらくBladeスクリプトを書いていくと多々困ることが出てくると思います。特に初心者にとって前回のその3に記述した事柄は最たるものでしょう。
今回は関数を作成したいと思った時にどのように記述して関数を作成、引数を受け取るのか?という所に焦点を当てています。
[ad#gglad]
■クラス・メソッドを作り出すコマンドがない
[cpp]
class Marker() // NG
public int Calculate() // NG
def calculate() // NG
[/cpp]
そもそもBladeスクリプトにはクラス、メソッドを作り出すコマンドは存在しません。あるとばっかり思っていたのですがないのです。
そのため、1つのスクリプト内ではメソッドもクラスも作れません。
しかし、作成したスクリプトはメソッドとして再利用可能なので、inputコマンドを記述することで、引数を持ったメソッドを作り出すことはできます。
これを理解していないと各ファイルの頭に
[cpp]
string $sels[] = `getModules -selected`;
[/cpp]
のような一文を記述する羽目になります。
これはgetModules関数に -selected というオプションを付けることで、
現在シーン内で選択されているオブジェクトを取得し、その名前(オブジェクト)を配列に格納します。
という関数です。
inputの引数を知らない時にはこれの何が悪いのか?
と自分は思っていましたが、任意の格納順をもった配列に対して操作をするとき、同じ処理を別の関数内でしなければならないという事実が出てきました。
オブジェクトならまだしも、ただの文字列・数字の時には外部に引き渡す必要があったりしてもっと面倒になります。
当たり前やんと言われるとその通りです(T_T
その様なお粗末な結果を避けるために、関数としてファイルを作成する際の引数の取り方を記述します。
前述したとおりinputコマンドを使った.hslファイルを作成することで引数を受け取れます。
■引数の取り方・戻り値の渡し方(特殊ルールあり)
[cpp]
string $name;
int $num;
array $arr[2];
input $name; // NG
input $name ""; // OK
input $num 0; // OK
input $arr [[,]]; // OK
return $name;
[/cpp]
ここでの注意事項は1つだけ、inputの引数には必ず 『変数の型にあった文字・数字』 を入力する必要があるということ。
input 変数 変数の型にあった文字・数字;
が使い方になります。
[ad#gglad]
ここまで理解できればほとんどいろんなことにチャレンジ可能です。
あとは、Helpの読み方をちょっと知るだけで、いくらでも様々なことができるようになります。