我无法找到新标签,但有新行,那么你如何在块中保留标签?
help new-line
USAGE:
NEW-LINE position value
DESCRIPTION:
Sets or clears the new-line marker within a block or paren.
NEW-LINE is a native! value.
ARGUMENTS:
position [block! paren!] "Position to change marker (modified)".
value "Set TRUE for newline".
REFINEMENTS:
/all => Set/clear marker to end of series.
/skip => Set/clear marker periodically to the end of the series.
size [integer!]
RETURNS:
[block! paren!]
答案 0 :(得分:3)
数组中每个单元格有一个换行符号(“any-block!”s),表示成型过程是否应该在该值之前输出换行符。
缩进仅由这些标志驱动。缩进从第一个换行标志开始,进一步的换行将各自对齐到该级别,如果有任何换行/缩进,则在块的末尾有一个outdent发生。
>> data: [a b c]
>> new-line next data true
>> data
== [a
b c
]
请注意,块[a b c]
内的换行符有4个“候选位置”(例如,位置为[* a * b * c *]
)。然而,只有三个值单元格,换行标记表示希望在该单元格之前输出换行符。由于缺少任何地方放置第四个换行信号,Rebol2和Red的决定是隐含地将结束括号放在自己的行上,如果有任何换行标记处理的话。
I've previously mentioned在面对系列修改时,如何“管理”这样的“带外”信息并不明显。它有助于满足您的期望。即使只担心一点,也会有很多细微差别,例如当你说:
compose [
1 + (block1)
(block2)
]
如何在COMPOSE中的内容与拼接数据本身之间的内容之间合并换行标记?这只是与一位相关的逻辑。加入一些“缩进计数”会引入更多问题。此外,这个数字还有很多不足之处:“游戏规则”之一是将每个值单元的4个平台指针保持在最低点。
扩展格式化功能的可能性不大。尾部获取其自己的换行标记的一个功能请求是accepted for open source Rebol3,但是rejected by Red。我不希望在这方面看到更多的事情。