如果有APL的条件?

1 if-statement apl gnu-apl

所以,我想知道/要求; 是否可以在APL中执行If语句?如果是这样的话?

这是我的代码

    'Please enter a number to count to: ' 
 number ?? 
 ?number
Run Code Online (Sandbox Code Playgroud)

我如何获得一个if语句,如果用户输入的数字超过100,它将打印出"太高"并结束; 或者如果它是100或者那么它会继续吗?

谢谢!

小智 7

在 Dyalog APL 中,你有一个整洁的小东西,叫做守卫。

它们可用于 dfns 并在特定条件匹配时评估代码。

func ? {?>100 : 'too high' ? 1 : 'number is ok'}
Run Code Online (Sandbox Code Playgroud)

  • `1 : ` 部分(在 `⋄` 之后的假分支中)的意义是什么? (2认同)

小智 5

如果您的APL支持控制结构,那么这应该工作:

? generateAll number
:If number>100
   ??'Too high'
:else
   ??? number
:endif
?
Run Code Online (Sandbox Code Playgroud)

如果它不支持控制结构(如APL2),则需要分支:

? generateAll number
 ?(number>100)/error
 ??? number
 ?0
error:
 ??'Too high'
?
Run Code Online (Sandbox Code Playgroud)

您也可以使用像execute这样的技巧,但这样做的可读性较差.