補助キー参照子は、キーの探索方法(探索範囲)を指定するのに使用します。
通常、KI言語では、キーストリング中からキーを探索する際、キーストリングの並び順に調べていきます。そのため、キーストリング内の後方にあるキーほど探索に時間がかかります。
※キーの多いキーストリングの場合、キーの探索によってパフォーマンスが低下することがあります。
補助キー参照子で探索範囲を限定することで、探索の効率化やキーラベル名の衝突を防ぐことがが可能です。
サンプルでは、下記6個の補助キー参照子を使用して、それぞれの参照結果を表示しています。
① >< 特定のキーの子キー中を探索
② -< 特定のキーの先祖中を探索
③ -/ 特定のキーの妹キー中を探索
④ -\ 特定のキーの姉キー中を探索
⑤ /< 特定のキーの下流を探索
⑥ \< 特定のキーの上流を探索
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
Kf(_referAssistSample){ Pe{ /*キーステーションが最初に実行するキーセット*/ N(_main); } } K(_main){ /* 表示に使用しているフォント:Ricty Diminished ダウンロードサイトはこちら:https://github.com/edihbrandon/RictyDiminished */ Se{ @s1{ ~back{~color="#ff000000";} ~font{~color="#ffffffff";~face="Ricty Diminished";~size="20";} ~parag{~align="left";} ~text{~align="top";} } @s2{ ~border{~color="#ff408000"; ~width="1"; ~style="solid";} ~font{~size="50";} ~margin{~top="100"; ~left;~right;~bottom;} ~text{~align="top";} } @s3{ ~border{~color="#ff408000"; ~width="1"; ~style="solid";} ~font{~size="50";} ~text{~align="top";} } } U{ C(#top){ C(#F,"祖母",@s3){ C(#F,"叔母1",@s2) C(#P,"親",@s2){ C(#M,"子1",@s2){ C(#F,"孫2",@s2) } C(#F,"子2",@s2) } C(#F,"叔母2",@s2) } } C(#Console,@s1) Pe{ (str)tmp=""; tmp = #F%str(true); tmp += "------------------------------------\n"; /*そのまま参照した場合*/ tmp += "#P#F? => " + #P#F? + "\n"; /* ①klb1><klb2 */ tmp += "#P><#F? => " + #P><#F? + "\n"; /* ②klb1-<klb2 */ tmp += "#P-<#F? => " + #P-<#F? + "\n"; /* ③klb1-/klb2 */ tmp += "#P-/#F? => " + #P-/#F? + "\n"; /* ④klb1-\klb2 */ tmp += "#P-\\#F? => " + #P-\#F? + "\n"; /* ⑤klb1/<klb2 */ tmp += "#P/<#F? => " + #P/<#F? + "\n"; /* ⑥klb1\<klb2 */ tmp += "#P\\<#F? => " + #P\<#F? + "\n"; /* 画面に表示 */ #Console? = tmp; } } } |
実行結果