lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


It was thus said that the Great Andrew Starks once stated:
> [I searched for prior thread, which I remember existing, but I could
> not find it.]
> 
> When I'm in a loop that uses continue, there is often a simple
> condition that I'm checking for, which will determine if I should skip
> or not.
> 
> Here is a fake example:
> ```
> --if x is nil use y. If x os false or y is false-y, continue
> x = x == nil and y
>     or not x and  goto continue
>     or x
> ```
> 
> I imagine that this does not work for good reason. However, I've had
> multiple occasions where I would have preferred this style over:
> 
> ```
> local x = x == nil and y or x
> 
> if not x then
>     goto continue
> end
> ```
> 
> Even to me, the second style is a bit clearer, but a comment can make
> the first one clear and it has the benefit of dealing with this
> initialization in one go.

  First off, you can do:

	local x = x or y
	if not x then
	  goto continue
	end

(in other words:  "or" will do the "== nil" for you).  Now, you would like
to do:

	local x = x or y or goto continue

  I don't know of any language that has GOTO as an expression, as the
semantics of an "expression GOTO" don't make any sense.  I mean, what is the
meaning of:

	local x = goto continue --?

  "Well," you'll potentially say, "have 'goto ...' return nil."  Okay, but
then you get silly constructs like:

	local x = goto continue or "Hello"

	local x = 5 + goto continue

	local x = some_table[some_key] = goto continue

  Even if you exclude the above, having 'goto ... ' as an expression still
doesn't work because you can't have a bare expression in Lua:

	3
	unexpected symbol near '3'

  You would be forced to do the silly

	local x = goto continue

or you complicate the Lua parser to make 'goto ... ' into a statement OR an
expression, but only an expression in certain contexts because other
contexts don't make sense.  

> While I would prefer that goto could be used in expressions, history
> has taught me that I'm about to have my mind changed. If someone could
> do me the favor of providing me with that narrative, I'd be most
> appreciative. :)

  -spc (Is my narrative good enough?)