If statement 如果APL有其他条件?

If statement 如果APL有其他条件?,if-statement,apl,gnu-apl,If Statement,Apl,Gnu Apl,所以,我在想/问;是否可以在APL中执行If语句?如果是,怎么做 这是我的密码 'Please enter a number to count to: ' number ←⎕ ⍳number 如何获取if语句,如果用户输入的数字超过100,它将打印出“太高”并结束;或者如果它是100或以下,那么它会继续吗 谢谢 取决于您使用的方言。一些APL实现支持控制结构,因此您可以编写如下内容 :If number>100 ⎕←'Too high' →0 :endif ⍳

所以,我在想/问;是否可以在APL中执行If语句?如果是,怎么做

这是我的密码

    'Please enter a number to count to: ' 
 number ←⎕ 
 ⍳number
如何获取if语句,如果用户输入的数字超过100,它将打印出“太高”并结束;或者如果它是100或以下,那么它会继续吗


谢谢

取决于您使用的方言。一些APL实现支持控制结构,因此您可以编写如下内容

:If number>100
   ⎕←'Too high'
   →0
:endif
⍳number
⍎(number>100)/'⎕←''Too high'' ⋄ →0'
⍳number
在“传统APL”中,您可能会做如下操作

:If number>100
   ⎕←'Too high'
   →0
:endif
⍳number
⍎(number>100)/'⎕←''Too high'' ⋄ →0'
⍳number
APL2中执行错误处理*的“经典”方法是⎕或⎕EA。 您的代码如下所示:

⎕ES(NUMBER>100)/'Too high'
⍳NUMBER
这里发生的是如果括号的计算结果为true,
⎕ES
将停止执行并回显带引号的字符串

如果您不想终止,请查看
⎕一些APL文档中的EA

请注意,我在APL2上使用的是绿黑环境,因此可能有更简洁的方法用更现代的方言(如Dyalog)来实现这一点


*我知道你们问的是条件句,而不是错误处理,但既然你们的示例终止了执行,那个么它也可能是错误处理


这与MBaas的建议有一个关键区别:他的解决方案将优雅地退出current函数,该函数可能返回一个值。使用
⎕ES
⎕EA
终止所有执行。

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

∇ generateAll number
:If number>100
   ⎕←'Too high'
:else
   ⎕←⍳ number
:endif
∇
如果它不支持控制结构(如APL2),则需要分支:

∇ generateAll number
 →(number>100)/error
 ⎕←⍳ number
 →0
error:
 ⎕←'Too high'
∇

您也可以使用诸如执行之类的技巧,但可读性较差。

在Dyalog APL中,您有一个整洁的小东西,称为守卫

它们可以用于DFN中,并在特定条件匹配时对代码进行求值

func ← {⍵>100 : 'too high' ⋄ 1 : 'number is ok'}

这些似乎都不起作用的可能重复项:/I输入一个超过500的数字;“太高”没有打印出来并且⍳“数字”已运行。基本上我想要的是,如果太高,不要打印出来⍳然而,如果它低于100,那么一定要打印出来。你用的是哪种APL?我相信我用的是GNU APL 1.5;不确定这是否有帮助。嗯,这些细节将有助于回答者提供合适的回答,因为它可以避免对方言的猜测。meagar的答案(由DanB编辑)考虑了主要的可能途径,也应适用于您的案例。请。看一看,如果答案是肯定的,也接受它,这样问题就结束了。:-)不幸的是,这些似乎都不起作用。如果低于100,第二个会打印出数字。但是,如果我输入的数字超过100,“过高”会按预期打印出来;但是我看到一个语法错误+at→0,然后它仍然打印出数字。代码显示完全混乱,上面显示的每个程序中应该有6行:一个标题行和5行代码…第二个示例(没有控制结构)对于GNU APL应该是正确的。我尝试了所有这些,但它们似乎都没有真正起作用。第二个是这个;我输入一个数字(大于或小于100),它就停在'∇ generateAll number':我想你误解了什么
generateAll
是一个函数,需要按此输入/定义。(我无法评论如何在GnuAPL中实现这一点)。然后您可以在会话中输入
generateAll 50
,以执行该函数。为什么有人否决了这个答案?这个解释有点简短,但它是一个非常现代和干净的回答方式。您可以在这里尝试:
1:
部分(在
1之后的假分支中)的意义是什么⋄)?