Difference between revisions of "Eval"
Jump to navigation
Jump to search
improved examples, fixed links and added note
imported>Odessa (fixed link typo) |
imported>Odessa (improved examples, fixed links and added note) |
||
Line 3: | Line 3: | ||
|summary = Added by NVSE V4. Reduces an expression to a boolean for use in conditional statements. Used to permit the usage of any function or expression that may be so reduced for a conditional, when the compiler would otherwise disallow it. | |summary = Added by NVSE V4. Reduces an expression to a boolean for use in conditional statements. Used to permit the usage of any function or expression that may be so reduced for a conditional, when the compiler would otherwise disallow it. | ||
Eval is required to test the value of [[User Defined Function|user defined functions]], and those related to [[Array | Eval is required to test the value of [[User Defined Function|user defined functions]], and those related to [[Array Variable|arrays]] and [[String Variable|strings]] in conditionals. | ||
|name = | |name = eval | ||
|returnType = boolean | |returnType = boolean | ||
|arguments = | |arguments = | ||
Line 15: | Line 15: | ||
==Example== | ==Example== | ||
<pre> | <pre> | ||
if eval SomeStringVar == "this string" | |||
; SomeStringVar has contents "this string" | |||
endif | |||
if eval | if eval SomeArray[3] == SomeValue | ||
; | ; Element at index 3 of SomeArray equals SomeValue | ||
endif | endif | ||
if eval ( | if eval (call SomeSuitableUDF) | ||
; | ; The user defined function returns true | ||
endif | endif | ||
if eval ( | if eval SomeInt == 5 | ||
; * including 'eval' here is not necessary, but is harmless | |||
elseif eval !(SomeActor.GetDead) ; * elseif can be used as usual | |||
; SomeActor is _not_ dead, (note '!') | |||
else | |||
; else can be used as usual | |||
endif | endif | ||
</pre> | </pre> | ||
==Notes== | ==Notes== | ||
*If struggling to understand the purpose of 'eval', then by analogy think of 'if eval' as simply telling the GECK compiler the line is written in NVSE language, to prevent it complaining with an error. | *If struggling to understand the purpose of 'eval', then by analogy think of 'if eval' as simply telling the GECK compiler the line is written in NVSE language, to prevent it complaining with an error. | ||
*Whilst not necessary, it is harmless to include 'eval' in any 'if' statement (when testing vanilla functions, for example). There is a possible advantage to this, in that when an illegitimate eval statement fails (example, testing certain functions on an empty ref var), an error message will be printed to the game console, rather than silently failing. | |||
==See Also== | ==See Also== | ||
*[[User Defined Function]] | *[[User Defined Function]] | ||
*[[Array | *[[Array Variable]] | ||
*[[String | *[[String Variable]] | ||
==External Links== | |||
*[http://obse.silverlock.org/obse_command_doc.html#OBSE_Expressions List of supported expression found in OBSE, these are equivalent in NVSE] | |||
*[http://fallout.bethsoft.com/eng/links/privacyredirect.php?site=http://www.loverslab.com/topic/26749-tutorial-nvse4-part-1-syntax-and-expressions/ Tutorial on syntax and expressions in NVSE 4] | |||
[[Category:Functions_(NVSE)]] | [[Category:Functions_(NVSE)]] | ||
[[Category:Commands]] | [[Category:Commands]] | ||
[[Category:Scripting]] | [[Category:Scripting]] |