Difference between revisions of "LSL Variables"
Siann Beck (talk | contribs) (→Scope of variables: Reverted until I can write it better.) |
(Added example) |
||
Line 18: | Line 18: | ||
== Scope of variables == | == Scope of variables == | ||
The variable name is in scope from the point it first appears to the end of the scope it is in, or the end of the script for global variables. A name may not be defined twice in the same scope, but a name may be redefined in an inner scope, and it hides the same name at outer scope. Again, the semantics are very similar to C and Java. | The variable name is in scope from the point it first appears to the end of the scope it is in, or the end of the script for global variables. A name may not be defined twice in the same scope, but a name may be redefined in an inner scope, and it hides the same name at outer scope. Again, the semantics are very similar to C and Java. That is to say, the following code will compile and run. | ||
<pre> | |||
integer i = 50; | |||
default { | |||
state_entry() { | |||
string i = "Hello there!"; //This WILL compile just fine, unlike in Java or C++. | |||
llOwnerSay(i); //Will say "Hello there!". There is no way to get the global variable i. | |||
} | |||
} | |||
</pre> | |||
== See Also == | == See Also == | ||
* [[string]] | * [[string]] |
Revision as of 19:49, 27 November 2007
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
A variable is a place to store information, like a number or a string.
A variable has a name, a type, and a value. The name starts with a letter, and the name convention is similar to C or Java. Case matters. X is not the same as x.
LSL is a strongly and statically typed language. This means that variables must be declared by type and that variables may only hold values of a corresponding type. However, a list variable may hold zero or more values of any other type.
Some examples:
integer count = 2; float measure = 1.2; string chars = "Lee"; list words = ["This", "Is", "A", "List"]; list entries = ["A list may contain many types of values such as", 2, 1.2, <0.4, 0.8, 1.6>]; vector vec = <1,6,2>;
Scope of variables
The variable name is in scope from the point it first appears to the end of the scope it is in, or the end of the script for global variables. A name may not be defined twice in the same scope, but a name may be redefined in an inner scope, and it hides the same name at outer scope. Again, the semantics are very similar to C and Java. That is to say, the following code will compile and run.
integer i = 50; default { state_entry() { string i = "Hello there!"; //This WILL compile just fine, unlike in Java or C++. llOwnerSay(i); //Will say "Hello there!". There is no way to get the global variable i. } }