HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
1016
ナナン氏連想配列を作ってみました。1解決


ナナン氏

リンク

2021/10/16(Sat) 11:38:46|NO.94172

実用には向かないです。バグありまくりかも...。


#include "hspinet.as" #module hashMap keyT,valT,arr #modinit int keyType,int valueType dim keyT dim valT dimtype arr,valueType keyT=keyType valT=valueType return #modcfunc local cast str _val,int _T dim T if _T==0{ T=keyT }else{ T=valT } dimtype res,T switch T case 4: res=int(_val) swbreak case 3: res=double(_val) swbreak case 2: res=str(_val) swbreak swend return res #modcfunc local Mget str _key dim index sdim md5 dimtype key,keyT key=cast(thismod,_key,0) varmd5@ md5,key,strlen(_key) index=int("$"+strmid(md5,0,4))/*indexが大きいと何故か配列に入らない*/ return arr(index) #define global ctype Mget(%1,%2) Mget@hashMap(%1,str(%2)) #modfunc local Mset str _key,str _val dim index sdim md5 dimtype key,keyT dimtype val,valT key=cast(thismod,_key,0) val=cast(thismod,_val,1) varmd5@ md5,key,strlen(_key) index=int("$"+strmid(md5,0,4))/*indexが大きいと何故か配列に入らない*/ arr(index)=val return #define global Mset(%1,%2,%3) Mset@hashMap %1,str(%2),str(%3) #global /*ここからサンプル*/ newmod m,hashMap,vartype("str")/*キーのタイプ*/,vartype("double")/*値のタイプ*/ Mset m,"a"/*キー*/,0.5/*値*/ Mset m,"b",5 mes Mget(m,"a"/*キー*/)*Mget(m,"b")



この記事に返信する


ナナン氏

リンク

2021/10/16(Sat) 11:59:25|NO.94173

衝突の例:

Mset m,"a",5 Mset m,"226616",15 mes Mget(m,"a") mes Mget(m,"226616")



ONION software Copyright 1997-2023(c) All rights reserved.