Dyalog APL 中的多行文本值
Multi-line text values in Dyalog APL
如何在 Dyalog APL 中对多行文本值进行编码?
我想编写这样的代码:
query←'
SELECT *
FROM SOME_TABLE
'
能够将此文本复制到 SQL 开发人员并返回。
我知道我可以这样编码:
query←''
query,←'SELECT * '
query,←'FROM SOME_TABLE '
但它不允许我将此文本复制到 SQL 开发人员并轻松返回。
是否可以临时覆盖 Dyalog APL 函数源代码中的换行符?
恐怕多行字符串不存在(但我希望如此)。
解决这个问题的唯一方法是按如下方式编写:
query←ScriptFollows
⍝ SELECT *
⍝ FROM Some_Table
从SQLDev粘贴时,select插入的文本并点击⍝按钮编辑器工具栏以在每一行插入注释符号。
如果使用 IDE,请单击并按住鼠标右键以 select 一个没有注释符号的矩形块。
P.S:您需要定义 fn ScriptFollows - 这是一种方法(由 Brian Becker 提供):
∇ r←ScriptFollows;lines;pgm;from
⍝ Treat following commented lines in caller as a script, lines beginning with ⍝⍝ are stripped out
:If 0∊⍴lines←(from←⎕IO⊃⎕RSI).⎕NR pgm←2⊃⎕SI
lines←↓from.(180⌶)pgm
:EndIf
r←2↓∊CRLF∘,¨{⍵/⍨'⍝'≠⊃¨⍵}{1↓¨⍵/⍨∧\'⍝'=⊃¨⍵}dtlb¨(1+2⊃⎕LC)↓lines
∇
S←{a←⍺⍺⋄,⎕cr'a'}
query←{
SELECT *
FROM Some_Table
}S⍬
这个功能实际上在很多年前就可以在基于 APL0 的(大型机)系统上使用,例如 Sharp APL(在 1980 年左右被删除?)、STSC APL*Plus 等。除其他外,不再可能使用普通的 del 编辑器返回编辑带有嵌入式回车 returns 的行(全屏编辑器,因此,还不存在)。它已被删除,因为它可能让用户感到困惑 - 系统需要一个结束语,只是按 return 并没有隐含地提供一个。
如何在 Dyalog APL 中对多行文本值进行编码?
我想编写这样的代码:
query←'
SELECT *
FROM SOME_TABLE
'
能够将此文本复制到 SQL 开发人员并返回。
我知道我可以这样编码:
query←''
query,←'SELECT * '
query,←'FROM SOME_TABLE '
但它不允许我将此文本复制到 SQL 开发人员并轻松返回。
是否可以临时覆盖 Dyalog APL 函数源代码中的换行符?
恐怕多行字符串不存在(但我希望如此)。
解决这个问题的唯一方法是按如下方式编写:
query←ScriptFollows
⍝ SELECT *
⍝ FROM Some_Table
从SQLDev粘贴时,select插入的文本并点击⍝按钮编辑器工具栏以在每一行插入注释符号。
如果使用 IDE,请单击并按住鼠标右键以 select 一个没有注释符号的矩形块。
P.S:您需要定义 fn ScriptFollows - 这是一种方法(由 Brian Becker 提供):
∇ r←ScriptFollows;lines;pgm;from
⍝ Treat following commented lines in caller as a script, lines beginning with ⍝⍝ are stripped out
:If 0∊⍴lines←(from←⎕IO⊃⎕RSI).⎕NR pgm←2⊃⎕SI
lines←↓from.(180⌶)pgm
:EndIf
r←2↓∊CRLF∘,¨{⍵/⍨'⍝'≠⊃¨⍵}{1↓¨⍵/⍨∧\'⍝'=⊃¨⍵}dtlb¨(1+2⊃⎕LC)↓lines
∇
S←{a←⍺⍺⋄,⎕cr'a'}
query←{
SELECT *
FROM Some_Table
}S⍬
这个功能实际上在很多年前就可以在基于 APL0 的(大型机)系统上使用,例如 Sharp APL(在 1980 年左右被删除?)、STSC APL*Plus 等。除其他外,不再可能使用普通的 del 编辑器返回编辑带有嵌入式回车 returns 的行(全屏编辑器,因此,还不存在)。它已被删除,因为它可能让用户感到困惑 - 系统需要一个结束语,只是按 return 并没有隐含地提供一个。