| 2017/09/05(Tue) 23:23:56 編集(投稿者) 2017/09/05(Tue) 23:22:30 編集(投稿者) 2017/09/05(Tue) 23:15:04 編集(投稿者) 2017/09/05(Tue) 23:09:16 編集(投稿者) 2017/09/05(Tue) 22:39:48 編集(投稿者) 2017/09/05(Tue) 22:35:31 編集(投稿者)
> 他の言語にあるような連想配列を使いたいのですが、なにかアイデアがありますでしょうか
桐には添え字付の1次元配列変数が設定できるのですが、連想配列というのはありません。
しかし、任意の文字列を指定すると、
対応する文字列が返されるという、文字列のマッチング技法はDOS桐の昔から存在しますよ。
なお、マッチングする文字列は必ず半角コンマ( , )で区切ったリストを使用します。
以下の例は、参照の例です。
手続き定義開始 prcSample( ) 変数宣言 自動,文字列{ &フルーツ名List, &単価List } 変数宣言 自動,文字列{ &string, &result } 変数宣言 自動,整数 { &at } 変数宣言 自動,数値 { &price }
&フルーツ名List = #trim( "アップル,オレンジ,グレープ", 4 ) &単価List = #trim( "100 , 200, 300", 4 )
&string = "オレンジ" &at = #対応番号( &フルーツ名List, &string ) &result = #対応文字列( &単価List, &at ) &price = #num( &result )
確認 "&string = " + &string + " &result = " + &result
手続き定義終了
<蛇足>
#文字置換( str1 , n , str2 ) を使用すると、
半角コンマで区切った文字列<str1> の<n>番めの文字列を<str2>に置き換えることも出来ます。
詳しくは、ヘルプを参照してください。
※#文字置換関数では、#文字置換( str1 , str2 , str3 ) が一般的ですが、 ※#文字置換( str1 , n , str2 ) という半角コンマで区切った文字列<str1>を置換する特殊な書式が存在します。
<さらに蛇足>
サンプルを添付しますのでご参考にしてください。
<追記>
ご紹介した文字列のマッチング技法の原型は、dBASE言語のエキスパートのOZN君に教えてもらったものです。
原型は、dBASE言語の AT( )関数を利用するものであり、コンマ区切りの文字列である必要はありません。
もちろん、dBASE言語の AT( )関数は、桐では#文字位置( )関数に相当するのですが、
桐には半角コンマで区切った文字列を扱う関数が用意されていたので、
桐の場合の文字列のマッチング技法は、
#対応番号( ) と #対応文字列( ) を利用したものになりました。
|