找回密码
 加入
搜索
查看: 2838|回复: 7

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

  [复制链接]
发表于 2010-4-9 10:33:54 | 显示全部楼层 |阅读模式
本帖最后由 newuser 于 2010-4-10 10:31 编辑

如果以下代码中$Array[0]=""不写,就无法实现排序,可为什么呢?
代码:
#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[0]=10
        Return($RadomArray)               
EndFunc

Func SortRadomArray($Array)
        Local $i,$j,$t  
        For $i=1 To $Array[0]-1
                For $j=$i+1 To $Array[0]
                        If $Array[$i]>$Array[$j] Then
                                $t=$Array[$i]
                                $Array[$i]=$Array[$j]
                                $Array[$j]=$t
                        EndIf
                Next
        Next
    $Array[0]=""
        Return($Array)
EndFunc
发表于 2010-4-9 12:33:36 | 显示全部楼层
$Array[0]是数组头里面的数字表示数组元素的个数
当然有些数组也可以不要这个头
最好是 换成_ArrayDelete($Array,0)
 楼主| 发表于 2010-4-9 14:00:11 | 显示全部楼层
回复 2# lainline
为什么要删掉它呢?但要不置空,就无法实现排序了?不明白!
发表于 2010-4-9 14:15:43 | 显示全部楼层
不是无法排序而是头不需要排序

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

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

发表于 2010-4-9 23:09:16 | 显示全部楼层
$Array[0]=""存在也可以排。这里$Array[0]表示数组内容总数。
直接 _ArraySort($RadomArray, 0, 1) 就可以。

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

 楼主| 发表于 2010-4-10 10:26:40 | 显示全部楼层
回复 5# sensel

谢谢!我正在学SkyFree的教程,所以想弄明白,其实用UDF更省事,但我是个听话的学生,听SkyFree老师的话,即使有现成的函数,也要先从基础来,谁让我是个AutoIt的新手呢!还是个不太着急的学生,都1个多月了,还没学完呢!呵呵!
 楼主| 发表于 2010-4-10 10:28:21 | 显示全部楼层
回复 4# lainline
谢谢,一句话点醒梦中人!
发表于 2010-4-10 10:30:51 | 显示全部楼层
本帖最后由 zjimmy 于 2010-4-10 10:31 编辑

哪里无法排序了?没有$Array[0]=""照样可以排序!
因为_ArrayDisplay显示的内容是从$Array[0]开始的,这里的$Array[0]=""只是为了不显示出数组中所含排序数的总数而已。
而你需要排序的只是 $Array[1]~$Array[10],如果显示出$Array[0],会让人误以为$Array[0]没有参与排序,所以楼主就以为无法排序了!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-2 07:39 , Processed in 0.092374 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表