如何在Rebol中打开一个单词的新行状态?

时间:2015-01-21 21:16:37

标签: rebol rebol3

我知道,我知道。你问,“什么是新线状态?” 好吧,让我告诉你:

append [] w: first new-line [hello] on
== [
    hello
]

W现在是一个在附加到块时创建换行符的单词。

您可以将其关闭,例如Rebol 3中的这种方式:

append [] to word! w
== [hello]

但我没有找到一个很好的方法来打开它。你可以,Rebol大师吗?

澄清:我正在寻找一些'如此:

append [] f to word! "hello"

有一个新行。

2 个答案:

答案 0 :(得分:2)

根据分配的在分配时是否具有前一个换行符,似乎将新行状态分配给该词(我将对该词的正确性进行反思)陈述一段时间。)

此函数为具有新换行状态的单词重新分配相同的值(应保留上下文):

set-new-line: func [
    'word [word!]
    state [logic!]
][
    set/any word first new-line reduce [get/any word] state
]

我们还可以测试给定单词的换行状态:

has-new-line?: func [
    'word [word!]
][
    new-line? reduce [get/any word]
]

使用中:

>> x: "Foo"
== "Foo"

>> has-new-line? x
== false

>> reduce [x]
== ["Foo"]

>> set-new-line x on
== "Foo"

>> has-new-line? x   
== true

>> reduce [x]        
== [
    "Foo"
]

>> reduce [set-new-line x on set-new-line x off set-new-line x on]  
== [
    "Foo" "Foo"
    "Foo"
]
  • 应该适用于

  • 似乎适用于 v0.6.1,但有一点需要注意:new-line?似乎总是返回true

答案 1 :(得分:2)

回答原来的问题(我知道,因为我问过它,在另一个化身):

f: func [w][first new-line append copy [] :w on]