他のキーメソッドについては、REFERENCE「キーメソッド一覧」を参照してください。
%search() 特定のキーから指定した値を持つキーを検索するメソッドです。
引数:
(str)検索する値
[(int)孫キー以降を検索対象に含めない=false]
戻り値:
(key)検索されたキー
サンプルでは、事前に定義した.DataTableキーから以下の2種類のキーを検索しています。
①”太郎”の値をもつキーを検索
②100の値をもつキーを検索
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 |
Kf(_Search){ Pe{ /*キーステーションが最初に実行するキーセット*/ N(_main); } } K(_main){ Se{ @s1{ ~back{~color="#ff000000";} ~font{~color="#ffffffff";~size="20";} ~parag{~align="left";} ~text{~align="top";} } @s2{ ~back{~color="#ffeeeeee";} ~font{~color="#ff400020";~size="20";} ~parag{~align="left";} ~text{~align="top";} } } De{ (key).DataTable{ (key).student{ (str).name="太郎"; (key).score{(int).japanese=30;(int).science=90;} } (key).student{ (str).name="花子"; (key).score{(int).japanese=100;(int).science=75;} } } } U{ R{ C(#left,@s1) C(#right,@s2) } Pe(#Init){ try{ #left?=.DataTable%str(true); (str)tmp="①太郎の値を持つキーを検索し、\n"; tmp+=" <<1でその親キーを参照\n"; tmp+=".DataTable%search('太郎')<<1\n"; tmp+="---------------------------------------\n"; tmp+=.DataTable%search('太郎')<<1%str(true); tmp+="\n"; tmp+="②100の値を持つキーを検索し、\n"; tmp+=" <<(2).nameで親キーにある.nameの値を参照\n"; tmp+=".DataTable%search(100)<<(2).name?\n"; tmp+="---------------------------------------\n"; tmp+=.DataTable%search(100)<<(2).name?; #right?=tmp; }catch((key)ex){ stop(ex.message?); } } } } |
実行結果