Difference between revisions of "LSL 変数"
Jump to navigation
Jump to search
Coffee Mills (talk | contribs) |
Mako Nozaki (talk | contribs) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Multi-lang}} | {{Multi-lang|LSL Variables|/ja}} | ||
{{LSL Header}} | {{LSL Header/ja}} | ||
'''変数(variable)''' | '''変数(variable)'''は数値や文字列などの情報を保持しておく場所です。 | ||
変数は名前、型、値を持ちます。名前は文字で始まり、命名規則はCやJavaと同じです。大文字と小文字は区別されます。''X''は''x''と同じではありません。 | |||
LSLは著しく静的な型を持つ言語です。これは、変数が型を宣言する必要があり、変数は型に一致する値しか持つことができないことを意味します。しかしながら, list変数は他の型の値を0個以上持つことができます。 | |||
いくつかの例: | いくつかの例: | ||
Line 19: | Line 19: | ||
== 変数のスコープ == | == 変数のスコープ == | ||
変数名は最初に現れたところからその変数が含まれるスコープまで、またグローバル変数ではスクリプトの最後までスコープを持ちます。同じ名前を同じスコープの中で二度定義することはできませんが、内側のスコープで同じ名前を再定義することはできて、再定義された名前は外側のスコープの同じ名前を隠蔽します。重ねますが、動作的にはCやJavaにきわめて似通っています。一方で、次のコードはコンパイルして実行可能です。 | |||
<pre> | <pre> | ||
integer i = 50; | integer i = 50; | ||
default { | default { | ||
state_entry() { | state_entry() { | ||
string i = "Hello there!"; // | string i = "Hello there!"; //JavaやCとは違って、 これはコンパイルできます。 | ||
llOwnerSay(i); //"Hello there!" | llOwnerSay(i); //"Hello there!"というはずです。グローバル変数iの値を取り出す方法はありません。 | ||
} | } | ||
} | } | ||
</pre> | </pre> | ||
== 関連項目 == | == 関連項目 == | ||
* [[string]] | * [[string/ja|string]] | ||
* [[key/ja|key]] | * [[key/ja|key]] | ||
* [[integer/ja|integer]] | * [[integer/ja|integer]] | ||
* [[float/ja|float]] | * [[float/ja|float]] | ||
* [[list]] | * [[list/ja|list]] | ||
* [[vector/ja|vector]] | * [[vector/ja|vector]] | ||
* [[rotation]] | * [[rotation/ja|rotation]] |
Latest revision as of 01:07, 15 April 2010
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
変数(variable)は数値や文字列などの情報を保持しておく場所です。
変数は名前、型、値を持ちます。名前は文字で始まり、命名規則はCやJavaと同じです。大文字と小文字は区別されます。Xはxと同じではありません。
LSLは著しく静的な型を持つ言語です。これは、変数が型を宣言する必要があり、変数は型に一致する値しか持つことができないことを意味します。しかしながら, list変数は他の型の値を0個以上持つことができます。
いくつかの例:
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>;
変数のスコープ
変数名は最初に現れたところからその変数が含まれるスコープまで、またグローバル変数ではスクリプトの最後までスコープを持ちます。同じ名前を同じスコープの中で二度定義することはできませんが、内側のスコープで同じ名前を再定義することはできて、再定義された名前は外側のスコープの同じ名前を隠蔽します。重ねますが、動作的にはCやJavaにきわめて似通っています。一方で、次のコードはコンパイルして実行可能です。
integer i = 50; default { state_entry() { string i = "Hello there!"; //JavaやCとは違って、 これはコンパイルできます。 llOwnerSay(i); //"Hello there!"というはずです。グローバル変数iの値を取り出す方法はありません。 } }