column

Kompiraジョブフローの基礎 ジョブフローの書き方FAQ(その1)

ここでは、毎月第3木曜日14:30~定期的に開催しているKompiraのセミナーでご質問頂いたジョブフローの書き方についてご紹介します。

 
(1) 文字列と数字を”+”したらどうなるの?

Kompiraの変数は型を持ちませんので、その時に格納されている値を評価します。その際にどのようなリテラル(型)で評価するかにより、演算の結果が変わります。

(a) は2つの変数val1, val2の値が整数と評価されるので、足し算されます。
(b)は両方とも文字列なので”+”は文字列結合となります。
(c),(d)は型の変換の例で、整数を文字列にする場合にはstring()を、逆に文字列を整数にする場合はint()を用います。
(e)の整数+文字列の場合には型の異なる変数間の演算となるため実行時エラーとなります。

 
(2) ジョブフローのパラメータに123と書いた場合と”123″と書いた場合の動きの違いは?

こちらも上記の質問の場合と同様に、それぞれ整数、文字列で評価されます。

 
(3) 変数に型宣言は出来ないのか?

出来ません。

・ジョブフローのパラメータ指定で入力値に制約を持たせたい場合には、フォーム機能の「フィールド種別」で限定する事が出来ます。
参考:ジョブフローを実行するフォームの作成

・ジョブフロー中で整数を文字列に、文字列を数字に変換したい場合にはstring(), int()のような組み込み関数を用いて型変換を行ってください。

 
(4) 変数のスコープはどうなっているの?

・基本的にはジョブフロー内から参照できます。 (ジョブフロースコープ)
・{ } で囲まれた単純ブロックで定義された変数やループ変数は{}内に限定されます。 (ブロックスコープ)

 
(5) 配列要素を文字列中に展開する方法はあるか?

配列要素を直接文字列の中に埋め込むことはできないため、ブロックスコープか”%”演算子を使用して表示します。

 
(6) プレイスホルダーに複数の辞書変数から置換する方法は?

文字列 % 辞書変数 の “%”は演算子であり、文字列に近い方から適用されます。

(a)の場合、最初にdict1の”%k1″が置換されます。後ろのキー “%k5″はdict1にキーが無いため、置換されません。
2つ目の%演算子でdict2のキーで”%k5″が置換されます。

つまり、以下のように文字列が置換されて行きます。

(b)では dict1, dict2ともに k3 というキーを持ちます。これも(a)と同じルールで置換していくと以下のようになります。

このようにして、複数の辞書変数を用いて文字列置換を行う事が出来ます。