[AHK]AutoHotkey1.1.31.00原生支持Switch-Case

向国庆献礼

9月28日发布的1.1.31.00版AutoHotkey 终于增加了Switch支持!
Switch [v1.1.31+]
从互斥候选项列表中执行一种情况。

Switch [SwitchValue]
{
Case CaseValue1:
    Statements1
Case CaseValue2a, CaseValue2b:
    Statements2
Default:
    Statements3
}

小贴士

  1. SwitchValue是可选的,如果填写了SwitchValue则对SwitchValue求值一次,并与每个case值进行比较,直到找到匹配,然后执行该case。如果不写SwitchValue,则执行第一个结果为true(非零和非空)的情况。如果没有匹配的,并且存在缺省值,则执行缺省值。
  2. Switch语句字符串比较时是大小写敏感的。
  3. Case和Default必须以:结尾,每个Case后面最多可以列20个值,每个值必须是一个表达式,如数字、带引号的字符串或变量。
  4. 每个Case的第一句可以写在Case下面,也可写在Case的同一行的冒号后面。每个Case语句都隐式地以下一个Case/Default或右大括号结束。不像其他一些语言中的Switch语句,它不存在隐式的跳转,也不使用Break(除了跳出一个封闭循环之外)。
  5. 由于所有的Case都包含在同一个块中,所以某一Case的标签可以成为另一Case跳转(Goto)的目标。但是,如果标签被放置在Case或Default的正上方,它的目标是前一个Case的结束,而不是下一个Case的开始。
  6. Default不需要列在最后。

举个栗子

weekendOrWeekday1()  
{
	day:= A_WDay  ;1 位数表示的当前星期几(1-7)。 在所有区域设置中 1 都表示星期天.
	Switch [day]
	{
	Case 1,7:
		return "weekend"
	Default:
		return "weekday"
	}
}
MsgBox % weekendOrWeekday1()

使用if语句的示范

 weekendOrWeekday2() 
 {

	day:= A_WDay  ;1 位数表示的当前星期几(1-7)。 在所有区域设置中 1 都表示星期天.

	if (day == 1 or day == 7) 
	{
		return  "周末"
		} 
	return "平日"
}

再示范下三元运算符形式

weekendOrWeekday3()  
{
   day:= A_WDay  ;1 位数表示的当前星期几(1-7)。 在所有区域设置中 1 都表示星期天.
    return (day == 1 or day == 7) ? "weekend" : "weekday"
}

在2010年我曾经模仿实现过Switch语句,局限是仅支持数值型,示例如下:

value := A_Hour // 6
Switch1(value)
return


Switch1(value)
{
If IsLabel( "Case_" . value) 
	Goto Case_%value% 
Else 
	Goto Case_Default 
Case_0: 
	Msgbox, Good Night
    return
Case_1: 
	Msgbox, Good Morning
    return
Case_2: 
	Msgbox, Good afternoon
    return
Case_3: 
	Msgbox, Good Evening
    return
Case_Default:
	msgbox, Good Day
    return
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值