|
お世話になります。 表題の件ですが、行き詰っているので解決できるヒントがあればお願いします。
HASHTBL Apple HASHTBL Orange HASHTBL Melon
TEXTBLOCK list_fruit Apple Orange Melon ENDTEXTBLOCK
DIM fruit_list[3] Array = SPLIT(list_fruit,"<#CR>") FOR i=0 TO LENGTH(Array)-1 fruit_list[i] = Array[i] PRINT "fruit_list["+i+"] = "+fruit_list[i] // 確認用 NEXT
fruit_Number = "100" //適当な数字 Apple[fruit_Number] = "ふじ" PRINT Apple[fruit_Number] // = ふじ と表示される PRINT EVAL(fruit_list[0]+"[fruit_Number]") // = ふじ と表示される
// やりたいこと // EVAL(fruit_list[0]+"[fruit_Number]") = "紅玉" //代入して値を更新したい。ここでエラーが出る // PRINT EVAL(fruit_list[0]+"[fruit_Number]") // 紅玉 と表示させたい // 試したこと(EVALは代入に:=を使うらしい) // ()の位置や""で囲む位置などを工夫したがエラーになる // EVALの重ね掛けを試してみるなど迷走中・・・ // EVAL(EVAL(fruit_list[0]+"[fruit_Number]"):="紅玉") // EVAL(EVAL(fruit_list[0]+"[fruit_Number]")+":=<#DBL>紅玉<#DBL>") //エラーはでないが代入されない // 希望の条件 // 自作関数の引数にfruit_list[]を使ってFORで回したい // PUBLICは使いたくない
// よろしくお願いします。
|
No.1162 2021/02/11(Thu) 01:32:40
|
☆ Re: EVALで値の代入したい / しゅん |
|
|
|
// もう不要かもしれませんが、こんな感じ?
HASHTBL Fruits // 連想配列はこれ一つでOKです。CONST/fruit_listを20個作ってください
// Const良いですね。この方式の場合、ユニークなら連番でなくても良いです。 Const Apple = 100 Const Orange = 200 Const Melon = 300 DIM fruit_list[] = Apple, Orange, Melon
fruit_Number = "100" //適当な数字 Fruits[_I(Apple, fruit_Number)] = "ふじ" // Apple[fruit_Number]をこう書き換えます。以下同じ Fruits[_I(Orange, fruit_Number)] = "甘夏" PRINT Fruits[_I(Apple, fruit_Number)] // = ふじ と表示される PRINT Fruits[_I(Orange, fruit_Number)] // = 甘夏 と表示される
value_Update(Fruits, fruit_list, fruit_Number)
PRINT Fruits[_I(Apple, fruit_Number)] // = つがる と表示される PRINT Fruits[_I(Orange, fruit_Number)] // = 清見 と表示される
FUNCTION _I(kind, index) // GetIdxは入力が面倒なので変えました RESULT = kind + CHR(0) + index // 絶対に使わない文字を区切り文字にする FEND
TEXTBLOCK list_data 紅玉 清見 マスクメロン つがる ENDTEXTBLOCK
PROCEDURE value_Update(var fruits[], fruit_list[], fruit_Number) // fuit_listは参照のみなのでvar不要 DIM datas = SPLIT(list_data, "<#CR>") FOR i=0 TO LENGTH(datas)-1 fruits[_I(fruit_list[i Mod 3], fruit_Number)] = datas[i] NEXT FEND
|
No.1173 2021/02/12(Fri) 12:10:56
|
|