Hi, again, Ed,

Ed Dana wrote:
> 
> A couple quick follow-up questions, for my edification. :)
> 
> Why can literals be surrounded by "" or {}. Is there a difference
> in how REBOL executes these strings?
> 
> Just curious about the reason for this.
> 

It's very handy to have multiple string delimiters, in case you
want to have strings that include delimiters themselves.  For
example:


    make-img: func [
        src [string!]
        /dim xy [pair!]
    ][
        append
            append <img> rejoin [{ src="} src {"}]
            either dim [
                rejoin [{ width="} xy/x {" height="} xy/y {"}]
            ][
                ""
            ]
    ]

which behaves as:

    >> make-img "teeny.gif"
    == <img src="teeny.gif">
    >> make-img/dim "teeny.gif" 3x5
    == <img src="teeny.gif" src="teeny.gif" width="3" height="5">

Niceties aside, the curly brackets are normally used for "longer"
strings and the quotation mark used for "shorter" strings.

    >> glop: "123"
    == "123"
    >> append glop glop
    == "123123"
    >> append glop glop
    == "123123123123"
    >> append glop glop
    == "123123123123123123123123"
    >> append glop glop
    == "123123123123123123123123123123123123123123123123"
    >> append glop glop
    == {12312312312312312312312312312312312312312312312312
        3123123123123123123123123123123123123123123123}

But that's just a convention.

More importantly, the curly brackets can be used to create multi-
line strings easily:

    >> {this
    {    is
    {    a
    {    very
    {    long
    {    string
    {    }
    == {this
    is
    a
    very
    long
    string
    }

while quotation-mark-delimited strings must be on a single line:

    >> "this
    ** Syntax Error: Missing " at "this
    ** Near: pick ["high" "low"] guess > secret

HTH!

-jn-

-- 
; Joel Neely                             joeldotneelyatfedexdotcom
REBOL [] do [ do func [s] [ foreach [a b] s [prin b] ] sort/skip
do function [s] [t] [ t: "" foreach [a b] s [repend t [b a]] t ] {
| e s m!zauafBpcvekexEohthjJakwLrngohOqrlryRnsctdtiub} 2 ]
-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to