找回密码
 加入
搜索
查看: 3857|回复: 20

[AU3基础] [已解决] 一个变量两个值变换,请问有没有此类函数或如何简化?

 火.. [复制链接]
发表于 2016-10-22 23:16:35 | 显示全部楼层 |阅读模式
本帖最后由 chishingchan 于 2016-10-23 13:37 编辑

For 内循环:当 $S = B 时,设置 $S = A,当 $S =A 时,设置 $S = B
$S = "B"
If $S = "B" Then
        $S = "A"
ElseIf $S = "A" Then
        $S = "B"
EndIf
可不可以简化点(或能不能一行代码完成)?谢谢!
发表于 2016-10-22 23:49:39 | 显示全部楼层
本帖最后由 heroxianf 于 2016-10-22 23:53 编辑

最近在用这个 return 推荐一下。


Local $Data = 'A'        ;具体内容你自己设定

MsgBox(0, '', _Test($Data))


Func _Test($a)
        Select
                Case $a = 'A'
                        $a = 'B'
                        return $a
                Case $a = 'B'
                        $a = 'A'
                        return $a
        EndSelect
EndFunc   ;==>_Test
发表于 2016-10-22 23:59:51 | 显示全部楼层
这个貌似也不错~

Local $Data = 'Bd'        ;具体内容你自己设定

MsgBox(0, '', _Test($Data))


Func _Test($a)
        Select
                Case $a = 'A'
                        $a = 'B'
                        return $a
                Case $a = 'B'
                        $a = 'A'
                        return $a
                Case Else
                        Return '没有你想要的结果'
        EndSelect
EndFunc   ;==>_Test

评分

参与人数 1金钱 +10 收起 理由
chishingchan + 10

查看全部评分

发表于 2016-10-23 00:29:45 | 显示全部楼层
练练手~   见笑了


Local $Data = '是', $Data1 = '否'        ;自由设置对比数据
Local $S = '是'

MsgBox(0, '', _Test($Data, $Data1, $S))


Func _Test($a, $b, $c)
        Select
                Case $s = $a
                        $s = $b
                        return $s
                Case $s = $b
                        $s = $a
                        return $s
                Case Else
                        Return '没有你想要的结果'
        EndSelect
EndFunc   ;==>_Test
发表于 2016-10-23 01:14:30 | 显示全部楼层
本帖最后由 haijie1223 于 2016-10-23 11:39 编辑

你代码中的 elseif 可以改成 else,可以减少代码输入。
如果是用函数,可以这样
$S='B'
$S=_myfuc()
Func _myfuc()
if $S=='B' then retrun 'A'
retun 'B'
Endfunc
手机打字好累。。。

评分

参与人数 1金钱 +10 收起 理由
chishingchan + 10

查看全部评分

发表于 2016-10-23 01:16:46 | 显示全部楼层
回复 5# haijie1223


    学习
发表于 2016-10-23 06:56:56 | 显示全部楼层
我觉得只限定一行代码很难为人,即使定义一个函数,都多于一行代码了.
MsgBox(0, _go('B', -1), _Go('A', 1))

Func _Go($char, $iSwitch)
Return Chr(Asc($char)+$iSwitch)
EndFunc

评分

参与人数 2金钱 +20 收起 理由
heroxianf + 10 不知道你这是怎么转的
chishingchan + 10

查看全部评分

 楼主| 发表于 2016-10-23 08:54:04 | 显示全部楼层
谢谢各位的解答,受教了!
发表于 2016-10-23 08:55:44 | 显示全部楼层
回复 7# Alam

不错的代码,不过楼主似乎只关心$S这个变量的自动换值,如果用这种写法函数的话,还要每次都要指定参数的值才可以达到转换。
当然不同的场合用法不同,代码思路很不错。
 楼主| 发表于 2016-10-23 09:06:11 | 显示全部楼层
回复 5# haijie1223

for $i=1 to 10
    if $S='B' then $S='A'
    if $S='A' then $S='B'
next

    感觉不对!两个IF语句放在一起,实际结果应该是:$S='B'。
 楼主| 发表于 2016-10-23 09:26:31 | 显示全部楼层
自己总结一下:以下结果是:ABABAB,符合要求了。
Global $S = 'B'

MsgBox(0,"",_LRS())
MsgBox(0,"",_LRS())
MsgBox(0,"",_LRS())
MsgBox(0,"",_LRS())
MsgBox(0,"",_LRS())
MsgBox(0,"",_LRS())

Func _LRS()
        If $S = 'B' Then
                $S = 'A'
        Else
                $S = 'B'
        EndIf
                Return $S
Endfunc
 楼主| 发表于 2016-10-23 09:39:59 | 显示全部楼层
不知这个语句 "[REGEXPTITLE:" & 'A' & "|" & 'B' & "]" 补充一下对于一行代码有没有可能?
发表于 2016-10-23 11:37:11 | 显示全部楼层
本帖最后由 haijie1223 于 2016-10-23 11:38 编辑

回复 10# chishingchan


    嗯,确实如此,失误
发表于 2016-10-23 13:45:05 | 显示全部楼层
不知用处,三目(三元)有没有用?
发表于 2016-10-23 15:22:34 | 显示全部楼层
回复 14# afan


    三目有点问题,返回 true 或 false,不给其赋值。我试过不行,不知道是不是我写错了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-19 17:41 , Processed in 0.096005 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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