新版本的3.3.9以上的Assign是不是不支持中文了
本帖最后由 tryhi 于 2015-6-10 18:32 编辑http://www.autoitx.com/forum.php?mod=viewthread&tid=22107
8楼3mile的去重复非常高效,当时用3.3.6.1,现在发现新版本用不了,现在的新版还有什么比这个更高效的去重复算法
Assign('啊','测试文本')
MsgBox(0,0,Eval('啊'));新版本无效了
#include <Array.au3>
Local $rarray = ['中文','中文','汉字','汉字','中文','string','string',5,5,6,7,5]
$a = del_chongfu($rarray)
_ArrayDisplay($a,Eval(5))
Func del_chongfu($array)
Local $rarray = [$array],$temp
Assign($array, 0)
For $i = 1 To UBound($array)-1
$temp = $array[$i]
If Not IsDeclared($temp) Then
Assign($temp, $i)
ReDim $rarray
$rarray = $temp
EndIf
Next
Return $rarray
EndFunc
_ArrayUnique 3.3.9.4 可以得出正确结果 本帖最后由 make2855 于 2015-6-10 21:51 编辑
v 3.3.13.20#include <Array.au3>
Local $rarray = ['中文','中文','汉字','汉字','中文','string','string',5,5,6,7,5,'中文','中文','汉字','汉字','中文','string','string',5,5,6,7,5,'中文','中文','汉字','汉字','中文','string','string',5,5,6,7,5]
$t1 = TimerInit()
$a = del_chongfu($rarray)
$d1 = TimerDiff($t1)
_ArrayDisplay($a,"Time : " & Round($d1,1))
$t2 = TimerInit()
$b =Unique($rarray)
$d2 = TimerDiff($t2)
_ArrayDisplay($b,"Time : " & Round($d2,1))
Func Unique($Array)
If Not UBound($Array) Then Return ""
Local $Map[]
For $i In $Array
If Not MapExists($Map, $i) Then $Map[$i] = ""
Next
Local $MapKey = MapKeys($Map)
Local $Ret
For $i = 0 To UBound($MapKey) -1
$Ret[$i] = $MapKey[$i]
Next
Return $Ret
EndFunc
Func del_chongfu($array)
Local $rarray = [$array],$temp
Assign($array, 0)
For $i = 1 To UBound($array)-1
$temp = $array[$i]
If Not IsDeclared($temp) Then
Assign($temp, $i)
ReDim $rarray
$rarray = $temp
EndIf
Next
Return $rarray
EndFunc
回复 4# make2855
厉害啊,原来现在新出了MapKeys这类函数啊 学习了。。。。。。。。。。 新版本?哪来的新版本? 3.3.13.20才有MapExists()函数啊,我现在用3.3.12.0没有。
页:
[1]