Core Function Goto Label

From Sputnik Wiki
(Difference between revisions)
Jump to: navigation, search
(Example)
Line 32: Line 32:
 
Below:
 
Below:
 
println(  "Hello Below"  );
 
println(  "Hello Below"  );
 +
</syntaxhighlight>
 +
 +
Goto can be pretty crazy in where it can jump you to for example:
 +
 +
<syntaxhighlight lang="sputnik">
 +
{
 +
if( "Cat" == "Dog")
 +
{
 +
if( "Cat" == "Dog")
 +
{
 +
}
 +
else
 +
{
 +
while(false)
 +
{
 +
switch(100)
 +
{
 +
case 1:
 +
{
 +
}
 +
break;
 +
case 2:
 +
{
 +
fox:
 +
say "FOX!!!!!!!!!!!!!!!!!";
 +
goto finish;
 +
}
 +
break;
 +
case 3:
 +
{
 +
while(false)
 +
{
 +
foreach("lol" as $c)
 +
{
 +
for($i = 0; $i < 10; $i++)
 +
{
 +
for( 0 .. 30 as $k )
 +
{
 +
cat:
 +
say "CAT!!!!";
 +
goto fox;
 +
}
 +
}
 +
}
 +
}
 +
}
 +
break;
 +
case 4:
 +
{
 +
}
 +
break;
 +
}
 +
}
 +
}
 +
 +
}
 +
}
 +
 +
say "Begin";
 +
goto test;
 +
 +
if(1==2)
 +
{
 +
say "Test";
 +
test:
 +
say "Hello";
 +
}
 +
 +
say "End";
 +
goto cat;
 +
finish:
 +
say "OK I'm done";
 +
// Prints:
 +
// Begin
 +
// Hello
 +
// End
 +
// CAT!!!!
 +
// FOX!!!!!!!!!!!!!!!!!
 +
// OK I'm done
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
[[Category:Core Function]]
 
[[Category:Core Function]]

Revision as of 11:46, 27 August 2013

Goto Label; & Label:

Description

Jump to another section of the script

Remarks

This is not a universal *jump to anything you can see* it can only jump through local scopes and what not.

Think of it as a kind of multilayer break statement.

Note - People often avoid using "goto" statements in languages because they tend to be slow and a very poor way of solving a problem yet its here if you want it.

If a label cannot be found an exception will occur.

Example

goto Begin;
 
Above:
println(  "Hello Above"  );
goto Below;
 
Begin:
println(  "Hello"  );
goto Above;
 
Below:
println(  "Hello Below"  );

Goto can be pretty crazy in where it can jump you to for example:

{
	if( "Cat" == "Dog")
	{
		if( "Cat" == "Dog")
		{
		}
		else
		{
			while(false)
			{
				switch(100)
				{
					case 1:
					{
					}
					break;
					case 2:
					{
						fox:
						say "FOX!!!!!!!!!!!!!!!!!";
						goto finish;
					}
					break;
					case 3:
					{
						while(false)
						{
							foreach("lol" as $c)
							{
								for($i = 0; $i < 10; $i++)
								{
									for( 0 .. 30 as $k )
									{
										cat:
										say "CAT!!!!";
										goto fox;
									}
								}
							}
						}
					}
					break;
					case 4:
					{
					}
					break;
				}
			}
		}
 
	}
}
 
say "Begin";
goto test;
 
if(1==2)
{
	say "Test";
	test:
	say "Hello";
}
 
say "End";
goto cat;
finish:
say "OK I'm done";
// Prints:
// Begin
// Hello
// End
// CAT!!!!
// FOX!!!!!!!!!!!!!!!!!
// OK I'm done
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox