形式
remap( $values, $keys, $dst)
引数
- $values: 連想配列
- $keys: キー変換配列
- $dst: 結果連想配列
完了時の動作
- 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
- 常にバックトラックします。前の述語にバックトラックします。
説明
連想配列から、キーの値を変換して新しい、連想配列を作成します。
つまり、
{ 'A' => 1, 'B' => 2, 'C' => 3 }
という連想配列があり、キーをそれぞれ 小文字にしたい場合、
{ 'A' => 'a', 'B' => 'c', 'C' => 'c' }
というキー変換配列を与えて、remapを実行させますと、
{ 'a' => 1, 'b' => 2, 'c' => 3}
という結果を得ることができます。
remapはDBライブラリと組み合わせて使用します。あるSQLの結果を用いて、select/insert等のDB述語を実行する場合にカラム名が異なる為に直接実行できない場合に、remapを使用します。
コード例 (lib/remap.p)
,$a == { 'A' => 1, 'B' => 2, 'C' => 3, 'D' => 4}
,$k == { 'A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd' }
,prtn($a)
,$r == remap($a, $k)
,prtn($r);
実行例
D:\sample\lib>adp remap.p
{A => 1, B => 2, C => 3, D => 4}
{a => 1, b => 2, c => 3, d => 4}
キーの配列の要素数の方が少ない場合はエラーとなりません。キーの配列の要素数だけ連想配列が作成されます。
値の配列の要素数より、キーの配列の要素数が多い場合エラーとなります。