newuser 发表于 2010-4-9 10:33:54

函数返回的值为什么要置空?[已解决]

本帖最后由 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

lainline 发表于 2010-4-9 12:33:36

$Array是数组头里面的数字表示数组元素的个数
当然有些数组也可以不要这个头
最好是 换成_ArrayDelete($Array,0)

newuser 发表于 2010-4-9 14:00:11

回复 2# lainline
为什么要删掉它呢?但要不置空,就无法实现排序了?不明白!

lainline 发表于 2010-4-9 14:15:43

不是无法排序而是头不需要排序

如果你需要全都排序把 For $i=1 To $Array-1
改为For $i=0 To $Array-1

sensel 发表于 2010-4-9 23:09:16

$Array=""存在也可以排。这里$Array表示数组内容总数。
直接 _ArraySort($RadomArray, 0, 1) 就可以。

newuser 发表于 2010-4-10 10:26:40

回复 5# sensel

谢谢!我正在学SkyFree的教程,所以想弄明白,其实用UDF更省事,但我是个听话的学生,听SkyFree老师的话,即使有现成的函数,也要先从基础来,谁让我是个AutoIt的新手呢!还是个不太着急的学生,都1个多月了,还没学完呢!呵呵!

newuser 发表于 2010-4-10 10:28:21

回复 4# lainline
谢谢,一句话点醒梦中人!

zjimmy 发表于 2010-4-10 10:30:51

本帖最后由 zjimmy 于 2010-4-10 10:31 编辑

哪里无法排序了?没有$Array=""照样可以排序!
因为_ArrayDisplay显示的内容是从$Array开始的,这里的$Array=""只是为了不显示出数组中所含排序数的总数而已。
而你需要排序的只是 $Array~$Array,如果显示出$Array,会让人误以为$Array没有参与排序,所以楼主就以为无法排序了!
页: [1]
查看完整版本: 函数返回的值为什么要置空?[已解决]