chishingchan 发表于 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可不可以简化点(或能不能一行代码完成)?谢谢!

heroxianf 发表于 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

heroxianf 发表于 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

heroxianf 发表于 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

haijie1223 发表于 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
手机打字好累。。。

heroxianf 发表于 2016-10-23 01:16:46

回复 5# haijie1223


    学习

Alam 发表于 2016-10-23 06:56:56

我觉得只限定一行代码很难为人,即使定义一个函数,都多于一行代码了.MsgBox(0, _go('B', -1), _Go('A', 1))

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

chishingchan 发表于 2016-10-23 08:54:04

谢谢各位的解答,受教了!

haijie1223 发表于 2016-10-23 08:55:44

回复 7# Alam

不错的代码,不过楼主似乎只关心$S这个变量的自动换值,如果用这种写法函数的话,还要每次都要指定参数的值才可以达到转换。
当然不同的场合用法不同,代码思路很不错。

chishingchan 发表于 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'。

chishingchan 发表于 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

chishingchan 发表于 2016-10-23 09:39:59

不知这个语句 "" 补充一下对于一行代码有没有可能?

haijie1223 发表于 2016-10-23 11:37:11

本帖最后由 haijie1223 于 2016-10-23 11:38 编辑

回复 10# chishingchan


    嗯,确实如此,失误

afan 发表于 2016-10-23 13:45:05

不知用处,三目(三元)有没有用?

nmgwddj 发表于 2016-10-23 15:22:34

回复 14# afan


    三目有点问题,返回 true 或 false,不给其赋值。我试过不行,不知道是不是我写错了。
页: [1] 2
查看完整版本: [已解决] 一个变量两个值变换,请问有没有此类函数或如何简化?