函数返回的值为什么要置空?[已解决]
本帖最后由 newuser 于 2010-4-10 10:31 编辑如果以下代码中$Array=""不写,就无法实现排序,可为什么呢?
代码:
#include <array.au3>
Local $RadomArray
$RadomArray=CreateRadomArray()
_ArrayDisplay($RadomArray)
$RadomArray=SortRadomArray($RadomArray)
_ArrayDisplay($RadomArray)
Func CreateRadomArray()
Local $N=11
Local $RadomArray[$N]
Local $i,$j,$Num,$Flag
$i=1
While $i<$N
$Num=Random(1,20,1)
$Flag=0
$j=1
While $j<$i
If $Num=$RadomArray[$j] Then
$Flag=1
ExitLoop
Else
$j +=1
EndIf
WEnd
If $Flag=0 Then
$RadomArray[$i]=$Num
$i +=1
EndIf
WEnd
$RadomArray=10
Return($RadomArray)
EndFunc
Func SortRadomArray($Array)
Local $i,$j,$t
For $i=1 To $Array-1
For $j=$i+1 To $Array
If $Array[$i]>$Array[$j] Then
$t=$Array[$i]
$Array[$i]=$Array[$j]
$Array[$j]=$t
EndIf
Next
Next
$Array=""
Return($Array)
EndFunc $Array是数组头里面的数字表示数组元素的个数
当然有些数组也可以不要这个头
最好是 换成_ArrayDelete($Array,0) 回复 2# lainline
为什么要删掉它呢?但要不置空,就无法实现排序了?不明白! 不是无法排序而是头不需要排序
如果你需要全都排序把 For $i=1 To $Array-1
改为For $i=0 To $Array-1 $Array=""存在也可以排。这里$Array表示数组内容总数。
直接 _ArraySort($RadomArray, 0, 1) 就可以。 回复 5# sensel
谢谢!我正在学SkyFree的教程,所以想弄明白,其实用UDF更省事,但我是个听话的学生,听SkyFree老师的话,即使有现成的函数,也要先从基础来,谁让我是个AutoIt的新手呢!还是个不太着急的学生,都1个多月了,还没学完呢!呵呵! 回复 4# lainline
谢谢,一句话点醒梦中人! 本帖最后由 zjimmy 于 2010-4-10 10:31 编辑
哪里无法排序了?没有$Array=""照样可以排序!
因为_ArrayDisplay显示的内容是从$Array开始的,这里的$Array=""只是为了不显示出数组中所含排序数的总数而已。
而你需要排序的只是 $Array~$Array,如果显示出$Array,会让人误以为$Array没有参与排序,所以楼主就以为无法排序了!
页:
[1]