Control Structures – Talk

From Bohemia Interactive Community
Revision as of 14:54, 27 December 2006 by Hardrock (talk | contribs) (More than one statement (SQS syntax - deprecated))
Jump to navigation Jump to search

Tried "if" and "switch" structures. "If" examples are wrong here! They don't work, because each block '{ }' must end with ';'. Am I right?

Also I can't get "switch" to work , anyone know how to use it? These examples are not working... --Messiah(UA) 12:19, 25 December 2006 (CET)

1. yes that's true if used in SQF syntax scripts or functions. The structures are like any Statement: If used in SQF syntax scripts or functions, you have to add the semicolon ";" (except if you want to use the structure as return value of the function). Should we add the semicolons in the examples?
2. I just noticed that there doesn't seem to be a ":" after "default". Also, it could be that you must include a default block, even if empty. Could you test that, maybe?
Apart from that, what are your errors? Take care that you have to write control structures into a single line if used in SQS syntax scripts. --hardrock 15:01, 25 December 2006 (CET)
A default block isn't necessary. --TeRp 15:10, 25 December 2006 (CET)
AFAIK Control structures are intended for SQF. If so, then it would be definitely right to add semicolons in examples! Cocerning "switch", I was writing sqf and I can confirm, that default block is not necessary, I tried with and without it. And I can't write exact error right now (i'm at work), but I remember that something was wrong near "(VARIABLE) do {". I'll check it in the evening today and post here exact error. --Messiah(UA) 11:11, 26 December 2006 (CET)
Figured it out. That was my bad and switch is working right now, but anyway example is missing one semicolon. My mistake was that I wrote "default:" automatically and I didn't notice, that "default" is right! So 100% working code is --Messiah(UA) 20:32, 26 December 2006 (CET)
     switch (VARIABLE) do
     {
        case VALUE:
        {
        };
        default
        {
        };
     };
Rgr. Thanks for the info, I will add semicolons to the examples for clearer understanding. --hardrock 14:42, 27 December 2006 (CET)

step command should be added to list --T_D 15:41, 25 December 2006 (CET)

Rgr. Thanks for the hint. --hardrock 14:42, 27 December 2006 (CET)

More than one statement (SQS syntax - deprecated)

Do you think this block really belongs here? If so, I'd recommend to alter the look.

First of all,

if (CONDITION) then {goto "label")}
#label
  statement1
  statement2
  statement3

is not really exact. label will be executed in any way here. To avoid that, you'd had to move label to the end of the file and add another label on after the conditional structure. Then, I'd recommend the simpler if-construct of SQS syntax here. The code then looks like that:

? CONDITION : goto "label"
#labelend

OTHER CODE

exit


#label
  STATEMENT
  ...
  goto "labelend"

Another version of writing this down is:

?!CONDITION : goto "labelend"

  STATEMENT
  ...

#labelend

which is clearer for short if-blocks. Same counts for if-else constructs

?!CONDITION : goto "labelelse"

  STATEMENT
  ...
  goto "labelend"

#labelelse
  STATEMENT
  ...

#labelend

Another matter why I'm not sure whether this belongs here is that "Control Structures" are statements, as mentioned on top. Thus this is not really a control structure since it isn't a statement. This could leave to confusion.

Solutions could be to open a page with Tips for SQS syntax or to expand the page of SQS syntax itself.

--hardrock 14:54, 27 December 2006 (CET)