Comment on page
Flow Control Effects
Commands for controlling the flow and operation of the program.
run %Executable%
run %Executable% (in [the] background|async)
run %Executable% with %Objects%
run %Executable% with %Objects% (in [the] background|async)
run my_func()
run function "my_func()" in the background
run function "my_func(a, b)" with (1, 2)
run function "my_func(a, b)" with (2, 5) in the background
Runs the given executable object. This includes directly-running functions and lambdas or dynamic functions. Some executables require parameters, given using the
with...
extension.Some executables cannot be run in the background.
(break|exit) [[the] current] section
Jumps to the end of the current block-section, skipping any code side-effects.
while true:
print "yes"
break section // leaves the loop
print "never reached"
print "goes to here" // jumps to here
Note that this break is always to the end of the current code block.
if 1 is 1:
print "yes"
if 2 is 2:
break section // leaves the current block
print "never reached"
print "yes" // jumps to here
if 1 is 1:
print "yes"
break section // leaves the current block
print "never reached"
else:
print "never reached"
print "done" // jumps to here
This has the danger of making some code unreachable, so should be used with caution to prevent unexpected behaviour.
(break|exit) [[the] current] section if %Boolean%
while true:
print "yes"
break section if {var} is true // leaves the loop if {var} is true
print "might still run"
print "goes to here" // jumps to here
Since the
break
effect may not be useful inside if/else condition sub-sections (since it would break that condition rather than the closing block), this provides a way to use it conditionally, if a particular block needs to be broken.(break|exit) [[the] current] loop
while true:
print "yes"
if {var} is true:
break loop // leaves the loop
print "might still run"
print "goes to here" // jumps to here
Provides an alternative to the
break
effect that targets the first available loop in the flow tree and exits it.loop {word} in {list}:
print "hello " + {item}
if 1 is 1:
if 2 is 2:
exit loop // breaks the loop
print "never reached"
print "exited early" // jumps down to here
continue [[the] current] loop
Jumps to the start of the current loop, skipping any code side-effects.
while true: // jumps back up to here
print "yes"
continue loop // back to the top
print "never reached"
This will begin the next iteration of the loop.
loop {word} in {list}: // jumps back up to here
print "hello " + {item}
continue loop // back to the top
print "never reached"
print "finished"
loop {word} in {list}: // jumps back up to here
print "hello " + {item}
if 1 is 1:
if 2 is 2:
continue loop // back to the top
print "never reached"
print "finished"
exit [the] program
Terminates the JVM process with exit code 0.
if {should_end} is true:
exit program
return %Object%
return true
return {var}
return 1 + 1
Returns a value from the current function or supplier.
function my_func:
trigger:
return "hello"
Nothing below the return instruction will be run.
function my_func:
trigger:
print "is run"
return "hello"
print "never run"
The return can be used in conditional sections.
function my_func:
trigger:
if 1 is 1:
return "hello"
Multiple returns can be used based on different conditions.
function my_func:
trigger:
if 1 is 2:
return "no"
else:
return "yes"
The return value is received by the executor.
function my_func:
trigger:
print is_true(true) // "yes"
print is_true(55) // "no"
function is_true(value):
trigger:
if {value} is true:
return "yes"
return "no"
(stop|return)
return
stop
This is the equivalent to the return effect but with no value. The code tree is simply ended.
function my_func:
trigger:
if 1 is 1:
return
print "yes"
If the caller was expecting a value, it will be given the empty
null
value.function my_func:
trigger:
print is_true(true) // "yes"
print is_true(55) // null
function is_true(value):
trigger:
if {value} is true:
return "yes"
return // gives back 'null'
assert %Boolean%
assert 1 is 1
assert 1 is not 2
assert "hello" is a string
The assertion effect is designed for testing and verifying assumptions about code. If the value given is false, an error will be thrown that stops the current execution.
If the value is true the assertion will pass silently and no error will be thrown.
function broadcast (value):
trigger:
assert {value} is a string
print {value}
This is used during the test phase when building Skript to check that syntaxes work as expected.
Last modified 1yr ago