On 2022-06-01 17:44, Alex Tweedly via use-livecode wrote:
I was surprised to find that

   constant K = TRUE

produces an error, though

  constant K = true

is fine. In other contexts, you can say

   put TRUE into myVar
   put true into hisVar
   etc.

but in a constant statement, it seems to be case sensitive.

Anyone got an interesting story (or theory) on why ?   :-)

Its a small mitigation of https://quality.livecode.com/show_bug.cgi?id=19413 - i.e. where the initializer of constants (and locals) is currently treated as a single literal.

In explicitVariables mode, unquoted literals are allowed on the RHS only if the literal is a (builtin) constant *and* the constants value is identical to the token you have provided.

That extra check is there to ensure that the constants (and initializers) you have used are actually what you intended.

Currently - the following does not do what you think:

   constant kEmptyString = empty

Indeed, this isn't allowed in explicitVariables mode, as the constant empty's value is "" and not "empty" - which is what kEmptyString will actually be with explicitVariables turned off.

Anyway, this rather odd and obscure facet of the language will disappear in 10 as we've made it so that initializers for constants and locals can be constant expressions. Thus:

    constant kTrue = TRUE
    local sEmptyString = empty

Will do precisely what they look like they should do...

Also, you'll be able to do things like:

    constant kPiBy2 = pi / 2
    constant kPiBy2Squared = kPiBy2 * kPiBy2
    constant kPiBy2String = format("%f", kPiBy2)
    local sPiMap = { "pi-by-2": kPiBy2, "pi-by-2-sq": kPiBy2Squared }

Warmest Regards,

Mark.

P.S. Amusingly, your question came up on exactly the same day I 'finished' my patch for the above - it now awaits review which may result in it not being quite finished ;)

--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to