形式
mkmap( $values, $keys, $dst)
引数
- $values: 値の配列
- $keys: キー配列
- $dst: 連想配列
完了時の動作
- 常に次の述語を実行に移ります。バックトラックしません。
バックトラック時の動作
- 常にバックトラックします。前の述語にバックトラックします。
説明
単純な値の配列からキーを与えて連想配列を作成します。
値の配列、キーの配列の先頭要素からそれぞれ連想配列が作成されます。
つまり、
{ $keys[0] => $values[0], $keys[1] => $values[1], .... }
と同様の変換を行います(但し連想配列の作成ではキー部分を変数にすることは出来ませんので上記コードはコンパイルできません)。
キーの配列の要素数の方が少ない場合は、キーの配列の要素数だけ連想配列が作成されます。
値の配列の要素数より、キーの配列の要素数が多い場合エラーとなります(実行例を参照のこと)。
コード例 (lib/mkmap.p)
,$a = { 'a', 'b', 'c', 'd' }, $r == $a.mkmap({ 'A', 'B', 'C', 'D' }), prtn($r);
,$a = { 'a', 'b', 'c', 'd' }, $r == $a.mkmap({ 'B', 'C', 'D' }), prtn($r);
,$a = { 'a', 'b', 'c' }, $r == $a.mkmap({ 'A', 'B', 'C', 'D' }), prtn($r);
実行例
D:\sample\lib>adp mkmap.p
{A => a, B => b, C => c, D => d}
{B => a, C => b, D => c}
RuntimeError:argment type error (1) At mkmap($a,{"A","B","C","D"},$r)