Difference between revisions of "LSL 変数"

From Second Life Wiki
Jump to navigation Jump to search
(New page: {{Multi-lang}} {{LSL Header}} '''変数(variable)'''は数値や文字列などの情報を保持しておく場所である. 変数は名前や型や値を持つ. 名前は文字で始...)
 
 
(4 intermediate revisions by 3 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''と同じではない.
変数は名前、型、値を持ちます。名前は文字で始まり、命名規則はCやJavaと同じです。大文字と小文字は区別されます。''X''は''x''と同じではありません。


LSLは強く静的な型を持つ言語である. このことは変数は型を宣言する必要があり、変数は型に一致する値しか持つことができないことを意味する. しかしながら, list変数は他の型の値を0個以上持つことができる.
LSLは著しく静的な型を持つ言語です。これは、変数が型を宣言する必要があり、変数は型に一致する値しか持つことができないことを意味します。しかしながら, list変数は他の型の値を0個以上持つことができます。


いくつかの例:
いくつかの例:
Line 19: Line 19:


== 変数のスコープ ==
== 変数のスコープ ==
変数名は最初に現れたところからその変数が含まれるスコープのところまで, またはグローバル変数ではスクリプトの最後までのスコープを持つ. 同じ名前を同じスコープの中で二度定義することはできないが, 内側のスコープで同じ名前を再定義することはでき, 再定義された名前は外側のスコープの同じ名前を隠す. 重ねて言うが意味的にはCやJavaにきわめて似通っている. 一方で, 次のコードはコンパイルして実行できる.
変数名は最初に現れたところからその変数が含まれるスコープまで、またグローバル変数ではスクリプトの最後までスコープを持ちます。同じ名前を同じスコープの中で二度定義することはできませんが、内側のスコープで同じ名前を再定義することはできて、再定義された名前は外側のスコープの同じ名前を隠蔽します。重ねますが、動作的にはCやJavaにきわめて似通っています。一方で、次のコードはコンパイルして実行可能です。
<pre>
<pre>
integer i = 50;
integer i = 50;
default {
default {
     state_entry() {
     state_entry() {
           string i = "Hello there!"; //JavaやCとは違って, これはコンパイルできる.
           string i = "Hello there!"; //JavaやCとは違って、 これはコンパイルできます。
           llOwnerSay(i); //"Hello there!"というはず. グローバル変数iの値を取り出す方法はない.
           llOwnerSay(i); //"Hello there!"というはずです。グローバル変数iの値を取り出す方法はありません。
     }
     }
}
}
</pre>
</pre>
== See Also ==
== 関連項目 ==
* [[string]]
* [[string/ja|string]]
* [[key]]
* [[key/ja|key]]
* [[integer/ja|integer]]
* [[integer/ja|integer]]
* [[float/ja|float]]
* [[float/ja|float]]
* [[list]]
* [[list/ja|list]]
* [[vector]]
* [[vector/ja|vector]]
* [[rotation]]
* [[rotation/ja|rotation]]

Latest revision as of 02:07, 15 April 2010

変数(variable)は数値や文字列などの情報を保持しておく場所です。

変数は名前、型、値を持ちます。名前は文字で始まり、命名規則はCやJavaと同じです。大文字と小文字は区別されます。Xxと同じではありません。

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の値を取り出す方法はありません。
     }
}

関連項目