APL中是否有行继续符,即表示输入尚未完成并继续解析下一行的字符?
我想要的原因是以类似于其形状的格式输入数组,例如,而不是:
Forecast ← 4 6 ⍴ 150 200 100 80 80 80 300 330 360 400 500 520 100 250 350 380 400 450 50 120 220 300 320 350
我想写(其中\
是假设的延续字符):
Forecast ← 4 6 ⍴ \
150 200 100 80 80 80 \
300 330 360 400 500 520 \
100 250 350 380 400 450 \
50 120 220 300 320 350
我使用GNU APL,如果它很重要,而且我是一个几乎完全的新手,所以如果我还没看到它就道歉。
答案 0 :(得分:5)
不,我所知道的APL的任何现代版本中都没有像行继续符一样的东西。
但是你有一点 - 在定义数组时视觉保真度很重要,但它从未真正在语言层面得到解决。
我可能已经完成了
Forecast ← 4 6 ⍴ 150 200 100 80 80 80, 300 330 360 400 500 520, 100 250 350 380 400 450, 50 120 220 300 320 350
或
Forecast ← 0 ⍴ 0
Forecast ← Forecast, 150 200 100 80 80 80
Forecast ← Forecast, 300 330 360 400 500 520
Forecast ← Forecast, 100 250 350 380 400 450
Forecast ← Forecast, 50 120 220 300 320 350
Forecast ← 4 6 ⍴ Forecast
当需要显式格式化时。
多年前,某些版本的APL允许您输入带有嵌入式回车功能的字符串,只需在完成之前不输入尾随引号即可。此功能具有类似的效果,但仅适用于字符串,仅适用于单个功能行。它最终被从IBM APL和Sharp APL中删除,可能还有许多其他人。对于那些陷入看似输入循环的用户来说可能会感到困惑,或者本机del编辑器之后无法处理这些行。
答案 1 :(得分:2)
使用GNU APL(可能还有其他版本),您可以使用以下语法:
A ← ⊃⍎¨⎕INP 'END'
1 0 0
0 1 0
0 0 1
'END'
此致
答案 2 :(得分:2)
Dyalog的MiServer使用了一个很好的命令,使开发人员能够通过函数“ScriptFollows”包含作为APL-Code中页面一部分所需的JS-Code,该函数只扫描此语句后面的行并返回所有文本下一段连续注释的行。 这个想法也可以(ab-)用于帮助您的请求:
∇ foo
⍝ required functions need to be in the WS or can be defined here:
dtlb←{⍵{((∨\⍵)∧⌽∨\⌽⍵)/⍺}' '≠⍵} ⍝ delete trailing blanks
ScriptFollows←{{∊{'⍝'=⊃⍵:'' ⋄ ' ',dtlb ⍵}¨1↓¨⍵/⍨∧\'⍝'=⊃¨⍵}dtlb¨(1+2⊃⎕LC)↓⎕NR 2⊃⎕SI}
⍝ end of initialization...
⍝ and then could just write:
arr←4 4⍴2⊃⎕VFI ScriptFollows ⍬
⍝ 1 2 3 4
⍝ 5 6 7 8
⍝ 9 10 11 12
⍝ 13 14 15 16
∇
缺点:数组的rho需要与数据无关,因此当您需要编辑数据时,您必须在两个地方进行编辑。除此之外,我必须说我真的爱上了这个ScriptFollows
- 东西; - )