Well, it’s not “no tea,” but that’s what I searched for to make sure this wasn’t a duplicate. And it’s what other people might search for, too.
I have an object that starts with “no” (“No Hard Feelings”), and another that starts with a number in words. And I can define them, and other variables that start with semi-reserved words, as follows.
[code]room 1 is a room.
a thing called no tea is in room 1.
a thing called fish and chips is in room 1.
a thing called three-piece suit is in room 1.
a thing called three o’clock high is in room 1.
a thing called inside joke is in room 1.
The problem comes when I add this:
say "1. [description of fish and chips].";
say "2. [description of inside joke].";
say "3. [description of three-piece suit]"; [this works okay because of the hyphen]
say "4. [description of three o'clock high].";
say "5. [description of no tea].";
To get the above to compile, I need to comment out the last two “say” lines.
And for the no tea, I could define an object called “no-tea” with printed name “no tea” and understand “no tea” and “tea” as no-tea.
But my object (“No Hard Feelings”) has three words, so “understand” etc. would get tricky. And I am wondering if there was a less hard-coded way to do this, because I can define No Hard Feelings, but I can’t do anything with it.
You could also say “[description of the three o’clock high]” and “[description of the no tea].”
Weirdly, this compiles:
say "[A no tea] is no tea."
but this doesn’t:
say "[The no tea] is no tea."
I guess another thing is that you could refer to “hard feelings” in your source code, assuming you don’t have something else called “hard feelings.” Suboptimal, though.
You could make synonyms with to decide phrases:
To decide which thing is three-o'clock-high:
decide on a three o'clock high.
To decide which thing is no-tea:
decide on a no tea.
Note that the “a” is necessary for it to compile, just like in matt w’s code. I’m pretty sure that’s unintentional rather than a language feature.
Making synonyms with decide phrases is a bit limited. With the definitions above, you can’t use “no-tea” in a table definition or other compile-time declaration.
Really, I find it much easier to define every problematic object with a hyphenated name (“no-hard-feelings”) as its canonical source code name. Then I can put in Understand lines as needed, or edit them, with no consequences for the rest of my source code.
Thanks all for this. These are really cool. Once again, I managed to botch the immediate reply these helpful responses deserved.
Sometimes it’s good to know that there’s no magical secret formula/special syntax I’m missing. One big thing that gets in my way is worrying I’m missing something I should know, and … it looks like I wasn’t, though with Matt’s code I’m disappointed in retrospect I missed giving “a/the no tea” a try.
I never thought of the definitions, and that’s cool & helped me with some other miscellaneous code, and I’m glad zarf mentioned that hyphens worked, because looking at my old source code, I used that before & figured it was just a rookie kludge. But it’s clearly not!
So a belated thanks to all three of you, for helping me once again.