Local $mMap[]
MapAppend($mMap, "a")
MapAppend($mMap, "b")
MapAppend($mMap, "c")
MsgBox(4096, "", MapExists($mMap, "a") & ", " & MapExists($mMap, "b") & ", " & MapExists($mMap, "c") & ", " & MapExists($mMap, 0) & ", " & MapExists($mMap, 1) & ", " & MapExists($mMap, 2))
$oDict = ObjCreate('Scripting.Dictionary')
MapAppend()
нигде не задействована.$mMap[-1]=0
#include <Array.au3>
Local $mMap[]
MapAppend($mMap,'a')
MapAppend($mMap,'b')
MapAppend($mMap,'c')
$mMap['a']=0
$mMap['b']=1
$mMap['c']=2
$mMap['-1']=-1
; $mMap[-1]=-1
MapAppend($mMap,'-2')
$mMap['100']='String'
$mMap[100]='Int'
$mMap['vova']=1
$mMap['Vova']=2
$R=MapKeys($mMap)
_ArrayDisplay($R,'MapKeys($mMap)')
$aMap=_Map_Array($mMap)
_ArrayDisplay($aMap,'_Map_Array($mMap)')
MsgBox(4096,'',MapExists($mMap,'a')&','&MapExists($mMap,'b')&','&MapExists($mMap,'c')&','&MapExists($mMap,0)&','&MapExists($mMap,1)&','&MapExists($mMap,2))
Func _Map_Array($vValue)
Local $aRet[UBound($vValue)][2],$n=0
For $i In MapKeys($vValue)
Local $vTag=$vValue[$i],$b='|'&VarGetType($vTag)&'|'
$aRet[$n][0]=$i
$aRet[$n][1]=StringInStr('|Map|Array|Object|DLLStruct|Function|UserFunction|',$b)? $b : $vTag
$n+=1
Next
Return $aRet
EndFunc
MapAppend можно использовать при добавлении обезличенных данных. Когда данные есть, и их обязательно нужно добавить конкретно в этот map, а названия для ключа на этот момент нет.Многие функции с Scripting.Dictionary переписал под MAP и десятки других сделал и к моему удивлению сейчас обнаружил, что функцияMapAppend()
нигде не задействована.
Проще создавать библиотеку через $mMap[Name]=Value
Но Name переводить в тип String, т.к. с отрицательным числом вылетает ошибка$mMap[-1]=0
А с положительными числами тоже есть нюансы, '100' и 100 это разные вещи для MAP ...
Не соглашусь с тем, что хорош. Map полностью выбивается из концепции AutoIt.более щипетилен к типу и виду ключей, но тем он и хорош
Local $mMap[]
$mMap[1] = 111
MapAppend($mMap, 222)
$mMap[2] = 333
ConsoleWrite($mMap[2] & @CRLF) ; 333
А какой был мотив переписывания?Многие функции с Scripting.Dictionary переписал под MAP
путатьпугать
При желании можно оформить ошибку. Даже анонимно:Вопрос изначальный прояснён
Скорость. Если работаешь со строками 10-20.000 разница незаметна.какой был мотив переписывания?
Чисто из спортивного интереса. Насколько большая разница? Секунды? Минуты?библиотека 108.000 слов - то MAP выграл по скорости