代码之家  ›  专栏  ›  技术社区  ›  user310291

在REBOL/RED中有一行是BLOCK,那标签呢?

  •  2
  • user310291  · 技术社区  · 6 年前

    我找不到新标签,但有新行,所以如何在块中保留标签?

        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!]
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   HostileFork says dont trust SE    6 年前

    数组中的每个单元格都有一个换行标志(“any block!”s),表示成型过程是否应在该值之前画一条新线。

    缩进仅由这些标志驱动。 缩进从第一个换行标志开始,如果出现任何换行/缩进,后续换行将每个换行都与该级别对齐,并且在块的末尾有一个突出部分。

    >> data: [a b c]
    
    >> new-line next data true
    
    >> data
    == [a 
       b c
    ]
    

    注意:块内换行有4个“候选职位” [a b c] (例如,位置是 [* a * b * c *] )然而,只有三个值单元格,其中一个换行标记表示希望输出换行符 之前 那个牢房。缺少放置第四个换行信号的位置,rebol2和red中的决定是隐式地将右括号放在自己的行上(如果处理了任何换行标记)。

    I've previously mentioned 在面对系列修改时,这样的“带外”信息是如何被管理的并不明显。它有助于实现你的期望。甚至担心 有很多细微差别,比如当你说:

    compose [
        1 + (block1)
        (block2)
    ]
    

    新行标记应该如何在组合中的内容和拼接数据本身中的内容之间进行合并?这只是与 一位 . 输入一些“缩进计数”会引入更多的问题。另外,没有足够的空间来计算:游戏规则之一就是将每个值单元的平台指针保持在4个。

    扩展格式化功能的可能性不大。一个特征要求尾部有自己的换行标记 accepted for open source Rebol3 但是 rejected by Red . 我不希望在这方面看到更多的工作。