找回密码
 加入
搜索
查看: 3001|回复: 12

[效率算法] 多条件判断如何写才便于维护[已解决]

  [复制链接]
发表于 2016-7-24 14:25:21 | 显示全部楼层 |阅读模式
本帖最后由 heroxianf 于 2016-9-5 09:49 编辑

下面代码是我简单的构思,但是完成不了,还请帮帮忙看看如何实现更加简单和便于后期维护。

如下面代码,只有几个条件判断的时候还写写到没事,如果$data_1 到 $data_300  了。那就麻烦了。我想用变量递增来循环,这样一来当$data_?逐渐增加我也不用逐个添加循环避免出错。还希望大家举个列子。


Local $Data_1[3] = [1, 2, 3]
Local $Data_2[3] = [4, 5, 6]
Local $Test = 1

For $eMlue In $Data_1
        If $eMlue = $Test Then
                For $eMlue In $Data_2
                        If $eMlue = $Test Then
                                MsgBox(0, '', $eMlue & '   值在第一个数组里,不在第二个数组里')
                                Exit
                        Else
                                MsgBox(0, '', $eMlue & '   值在第二个数组里')
                        EndIf
                Next
                ;... ...  后续如果增加$DATA_? 就添加进来
        Else
                For $eMlue In $Data_2
                        If $eMlue = $Test Then
                                MsgBox(0, '', $eMlue & '   值在第二个数组里')
                                Exit
                        Else
                                Sleep(10)
                        EndIf
                Next
                ;... ...  后续如果增加$DATA_? 就添加进来
        EndIf
Next
 楼主| 发表于 2016-7-24 14:43:16 | 显示全部楼层
突然发现连这个两次循环判断都没有做对~  哎。。。。
发表于 2016-7-24 17:38:29 | 显示全部楼层
表示完全不懂楼主想干啥...
发表于 2016-7-25 10:47:40 | 显示全部楼层
首先,你自己的逻辑得比较好,才能便于维护……
 楼主| 发表于 2016-7-25 21:04:27 | 显示全部楼层
回复 4# skyfree


    正在整理思路 这两天有点感冒 头晕的很。
发表于 2016-7-26 11:39:23 | 显示全部楼层
大约就这个样子可以方便变量循环
#include-once
#include "array.au3"
Global $data[99][3]
$data[0][0] = 1
$data[0][1] = 2
$data[0][2] = 3
_ArrayDisplay($data)
 楼主| 发表于 2016-7-27 04:21:15 | 显示全部楼层
回复 7# liongodmien


    我在想多条件同时判断,理顺了再交上来帮忙检查下。
发表于 2016-8-11 18:17:09 | 显示全部楼层
语言只是工具,逻辑清楚才是代码强壮简练的基础
 楼主| 发表于 2016-8-11 23:50:40 | 显示全部楼层
目前只能对所要判定的内容多种方法得到结果,然后在通过判断得出想要的的输出。比如

if $a>3 and $b=5 then
msgbox(0, '', 'ok')
endif

这样把自己想要帅选的都去判定一次,然后在组合判定是否成立。
发表于 2016-8-12 04:05:29 | 显示全部楼层
用配置文件就便于维护
 楼主| 发表于 2016-8-12 06:05:10 | 显示全部楼层
回复 11# qq82015930


    能举一个简单的例子吗?
 楼主| 发表于 2016-8-12 23:45:25 | 显示全部楼层
本帖最后由 heroxianf 于 2016-9-5 09:49 编辑

回复 7# liongodmien

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Local $Data = 'ssdghjkk'
Local $aArray1 = StringRegExp($Data, 's', 3)
Local $aArray2 = StringRegExp($Data, 'd', 3)
Local $aArray3 = StringRegExp($Data, 'o', 3)

Local $a = UBound($aArray1)
local $b = UBound($aArray2)
local $c = UBound($aArray3)

Select
        Case $a > 0 and $b > 0 and $c <= 0
                MsgBox(0, '', '条件1、2符合,3不符合')
        Case $a <= 0 and $b > 0 and $c <= 0
                MsgBox(0, '', '条件2符合,1、3不符合')
        Case $a > 0 and $b <= 0 and $c <= 0
                MsgBox(0, '', '条件1符合,2、3不符合')
EndSelect


目前我用这个可以满足我的要求,我使用它加入循环 通过不同条件来判断各个归类是否正确。就是条件多了,虽然有点繁琐,但是能解决问题,后期再考虑创建数组变量来代替这些。
 楼主| 发表于 2016-9-5 09:51:00 | 显示全部楼层
自己遇到的问题用13楼可以解决,实现过程虽然笨了一点,但是没有出现问题。只需维护好正则内容就好。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 00:20 , Processed in 0.077136 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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