「変数」の版間の差分
編集の要約なし |
|||
(同じ利用者による、間の30版が非表示) | |||
1行目: | 1行目: | ||
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/general/variable/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}} | |||
変数は、AliceScriptにおける主要な概念の一つです。変数は、任意の場所で宣言定義でき、その値を取り出したり代入することができます。 | 変数は、AliceScriptにおける主要な概念の一つです。変数は、任意の場所で宣言定義でき、その値を取り出したり代入することができます。 | ||
この記事では、多くの変数に共通する事項を説明した後、それぞれの型の特徴について説明します。 | この記事では、多くの変数に共通する事項を説明した後、それぞれの型の特徴について説明します。 | ||
変数は、すべて基となる<code>variable</code>から派生しています。これは、すべての変数に共通した操作セットを提供します。 | 変数は、すべて基となる<code>variable</code>から派生しています。これは、すべての変数に共通した操作セットを提供します。 | ||
AliceScriptの変数は、文字またはアンダースコアから始まり、任意の数の文字、数字、記号が続きます。[[キーワード| | AliceScriptの変数は、文字またはアンダースコアから始まり、任意の数の文字、数字、記号が続きます。[[キーワード|予約語]]を使用することはできません。次の例では、<code>a</code>という変数に<code>123</code>を代入し定義します。その後で、その変数の値を[[Print]]関数を使って出力します。 | ||
var a = 123; | var a = 123; | ||
print(a); | print(a); | ||
通常、変数に代入されるのは常にその値です。つまり、ある変数に式の値を代入するとその値への参照が代入されます。 | |||
= | 通常、変数を定義する際は次の形で宣言します。 | ||
var (修飾子) 名前 = 値; | |||
=ローカル変数とスコープ= | |||
変数はその有効な範囲内で、一意な名前である必要があります。この範囲をその変数のスコープと呼びます。スコープの範囲内では、同じ名前の変数を定義することはできませんし、反対にスコープの外に出ると、その範囲内で定義した変数は使用できません。 | 変数はその有効な範囲内で、一意な名前である必要があります。この範囲をその変数のスコープと呼びます。スコープの範囲内では、同じ名前の変数を定義することはできませんし、反対にスコープの外に出ると、その範囲内で定義した変数は使用できません。 | ||
AliceScriptでいうところのスコープの範囲は、原則としてそのコードのブロック内です。コードのブロックは、およそそのコードの波括弧の中を指します。次の例を参照してください。 | AliceScriptでいうところのスコープの範囲は、原則としてそのコードのブロック内です。コードのブロックは、およそそのコードの波括弧の中を指します。次の例を参照してください。 | ||
16行目: | 21行目: | ||
Func(); | Func(); | ||
print(a);//例外発生 | print(a);//例外発生 | ||
上記の例ではFuncを呼び出すことで、ローカル変数<code>a</code>が定義されていますがそのスコープの範囲外での呼び出しのため、関数外で変数<code>a</code>を使用することはできません。また、インクルードしたファイルに対してもスコープが適用されます。このため、異なるスクリプトファイル間でローカル変数を共有することはできません。 | |||
=variable型= | =グローバル変数= | ||
ローカル変数と反対の性質を持つものとして、グローバル変数があります。これは、スコープ内外のどこでも定義でき、定義されたスコープ外でもその変数を使用できます。グローバル変数はスクリプトではなくインタプリタに直接登録されます。その変数をグローバル変数として宣言定義するには<code>global</code>キーワードを使用します。 | |||
function Func() | |||
{ | |||
var global a = 123; | |||
} | |||
Func(); | |||
print(a);//出力:123 | |||
上記の例ではFuncを呼び出すことで、グローバル変数<code>a</code>が定義されているため、Funcの呼び出し後には、そのインタプリタで実行されるすべてのコードでグローバル変数<code>a</code>が使用できます。 | |||
=定数= | |||
定数は、変数とは異なり、一度宣言すると再度代入したり値を変更することができません。これは、プログラム上で変更されたくない値(トークンなど)を定義する際に役立ちます。定数にもスコープが存在し、ローカル定数とグローバル定数があります。定数を定義するには<code>var</code>キーワードの代わりに<code>const</code>キーワードを使用します。 | |||
const KEY = “ABCD”; | |||
print(KEY);//出力例:ABCD | |||
KEY = “EFGH”;//例外発生 | |||
=型= | |||
AliceScriptのすべての変数および定数は、値に評価されるすべての[[式]]と同じように、型を持ちます。インタプリタはコード内で実行されるすべての演算が型安全になるようにします。例えば<code>number</code>型の変数には、その値を加算したり減算したりする算術演算が許可されます。しかし、<code>bool</code>型にはその種類の演算は許可されません。次に、特定の型の規定値を使用して変数を初期化する例を示します。 | |||
var v = type.Activate(); | |||
型には次の種類があります。 | |||
==variable型== | |||
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/api/variable/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}} | |||
<code>variable</code>型は、すべての変数の値を表します。<code>variable</code>型は等値演算子をサポートします。この型から文字列型にのみ暗黙的な変換をサポートします。<code>variable</code>型のメソッドは次の通りです。 | <code>variable</code>型は、すべての変数の値を表します。<code>variable</code>型は等値演算子をサポートします。この型から文字列型にのみ暗黙的な変換をサポートします。<code>variable</code>型のメソッドは次の通りです。 | ||
*[[variable型のメソッド#Dispose|variable.Dispose]] | *[[variable型のメソッド#Dispose|variable.Dispose]] | ||
24行目: | 53行目: | ||
*[[variable型のメソッド#DeepClone|variable.DeepClone]] | *[[variable型のメソッド#DeepClone|variable.DeepClone]] | ||
*[[variable型のメソッド#ToString|variable.ToString]] | *[[variable型のメソッド#ToString|variable.ToString]] | ||
*[[variable型のメソッド#Properties|variable.Properties]] | *[[variable型のメソッド#Properties|variable.Properties]] | ||
*[[variable型のメソッド#Type|variable.Type]] | *[[variable型のメソッド#Type|variable.Type]] | ||
*[[variable型のメソッド#Convert|variable.Convert]] | *[[variable型のメソッド#Convert|variable.Convert]] | ||
==number型== | |||
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/api/number/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}} | |||
数値型は実数を表します。数値型は算術、比較、等値演算子をサポートしています。 | 数値型は実数を表します。数値型は算術、比較、等値演算子をサポートしています。 | ||
43行目: | 68行目: | ||
数値型への暗黙的な変換は存在しません。型変換演算子を使用するか<code>Convert</code>メソッドを使って、文字列型、<code>bool</code>型、<code>bytes</code>型からの明示的な変換がサポートされています。また、数値型専用のメソッドは存在しません。この型の型指定修飾子は<code>number</code>です。 | 数値型への暗黙的な変換は存在しません。型変換演算子を使用するか<code>Convert</code>メソッドを使って、文字列型、<code>bool</code>型、<code>bytes</code>型からの明示的な変換がサポートされています。また、数値型専用のメソッドは存在しません。この型の型指定修飾子は<code>number</code>です。 | ||
=bool型= | |||
AliceScriptの数値型では小数点以下の計算が予想通りにいかない場合があります。[[数値型の計算誤差]]の記事を参照してください。 | |||
==bool型== | |||
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/api/bool/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}} | |||
<code>bool</code>型は、ブール値の論理数を表します。<code>bool</code>型は論理、比較、等値演算子をサポートしています。 | <code>bool</code>型は、ブール値の論理数を表します。<code>bool</code>型は論理、比較、等値演算子をサポートしています。 | ||
50行目: | 81行目: | ||
<code>bool</code>型への暗黙的な変換は存在しません。特に、WSOFTScriptとは違い数値型の代わりに値を使用することはできません。また、文字列型、数値型、<code>bytes</code>型からの明示的変換がサポートされます。<code>bool</code>型専用のメソッドは存在しません。この型の型指定修飾子は<code>bool</code>です。 | <code>bool</code>型への暗黙的な変換は存在しません。特に、WSOFTScriptとは違い数値型の代わりに値を使用することはできません。また、文字列型、数値型、<code>bytes</code>型からの明示的変換がサポートされます。<code>bool</code>型専用のメソッドは存在しません。この型の型指定修飾子は<code>bool</code>です。 | ||
=bytes型= | |||
==bytes型== | |||
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/api/bytes/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}} | |||
<code>bytes</code>型は、バイナリデータ配列を表します。<code>bytes</code>型は比較、等値演算子をサポートしています。 | <code>bytes</code>型は、バイナリデータ配列を表します。<code>bytes</code>型は比較、等値演算子をサポートしています。 | ||
56行目: | 91行目: | ||
<code>bytes</code>型への暗黙的な変換は存在しません。また、文字列型、数値型、<code>bool</code>型からの明示的変換がサポートされます。<code>bytes</code>型専用のメソッドは存在しません。 | <code>bytes</code>型への暗黙的な変換は存在しません。また、文字列型、数値型、<code>bool</code>型からの明示的変換がサポートされます。<code>bytes</code>型専用のメソッドは存在しません。 | ||
=none型= | |||
==none型== | |||
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/api/none/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}} | |||
<code>none</code>型の有効な値は唯一<code>null</code>です。この型は<code>null</code>をとります。また、<code>null</code>型は比較演算子のみをサポートします。 | <code>none</code>型の有効な値は唯一<code>null</code>です。この型は<code>null</code>をとります。また、<code>null</code>型は比較演算子のみをサポートします。 | ||
<code>null</code>の値を表す定数が<code>null</code>として定義されています。 | <code>null</code>の値を表す定数が<code>null</code>として定義されています。 | ||
<code>null</code>型への暗黙的な変換および明示的な変換はサポートされていません。 | <code>null</code>型への暗黙的な変換および明示的な変換はサポートされていません。 | ||
=string型= | ==string型== | ||
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/api/string/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}} | |||
文字列型は、テキストを一連のUTF-16コード単位として表現します。文字列型は結合、比較、等値演算子をサポートしています。 | 文字列型は、テキストを一連のUTF-16コード単位として表現します。文字列型は結合、比較、等値演算子をサポートしています。 | ||
文字列型の規定値は空の文字列<code>””</code>です。また、この型の型指定修飾子は<code>string</code>です。 | 文字列型の規定値は空の文字列<code>””</code>です。また、この型の型指定修飾子は<code>string</code>です。 | ||
77行目: | 119行目: | ||
*[[string型のメソッド#IsNormalized|string.IsNormalized]] | *[[string型のメソッド#IsNormalized|string.IsNormalized]] | ||
*[[string型のメソッド#IndexOf|string.IndexOf]] | *[[string型のメソッド#IndexOf|string.IndexOf]] | ||
*[[string型のメソッド#LastIndexOf|string.LastIndexOf]] | |||
*[[string型のメソッド#Contains|string.Contains]] | *[[string型のメソッド#Contains|string.Contains]] | ||
*[[string型のメソッド#Replace|string.Replace]] | *[[string型のメソッド#Replace|string.Replace]] | ||
83行目: | 126行目: | ||
*[[string型のメソッド#ToUpper|string.ToUpper]] | *[[string型のメソッド#ToUpper|string.ToUpper]] | ||
*[[string型のメソッド#EmptyOrWhiteSpaces|string.EmptyOrWhiteSpaces]] | *[[string型のメソッド#EmptyOrWhiteSpaces|string.EmptyOrWhiteSpaces]] | ||
*[[string型のメソッド#Format|string.Format]] | *[[string型のメソッド#Format|string.Format]] | ||
=array型= | *[[string型のメソッド#Length|string.Length]] | ||
*[[string型のメソッド#Count|string.Count]] | |||
==array型== | |||
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/api/array/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}} | |||
配列型は、インデックスを使用してアクセスできる変数のリストを表します。配列型は、結合、比較、等値演算子をサポートしています。 | 配列型は、インデックスを使用してアクセスできる変数のリストを表します。配列型は、結合、比較、等値演算子をサポートしています。 | ||
配列型の規定値は空の配列<code>[]</code>です。この型は<code>null</code>をとり得ます。この型の型指定修飾子は<code>array</code>です。 | 配列型の規定値は空の配列<code>[]</code>です。この型は<code>null</code>をとり得ます。この型の型指定修飾子は<code>array</code>です。 | ||
103行目: | 152行目: | ||
*[[配列型のメソッド#Last|array.Last]] | *[[配列型のメソッド#Last|array.Last]] | ||
*[[配列型のメソッド#Flatten|array.Flatten]] | *[[配列型のメソッド#Flatten|array.Flatten]] | ||
*[[配列型のメソッド#Marge|array. | *[[配列型のメソッド#Marge|array.Merge]] | ||
*[[配列型のメソッド#Foreach|array.Foreach]] | *[[配列型のメソッド#Foreach|array.Foreach]] | ||
=delegate型= | *[[配列型のメソッド#Length|array.Length]] | ||
*[[配列型のメソッド#Count|array.Count]] | |||
==delegate型== | |||
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/api/delegate/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}} | |||
デリゲート型は、匿名関数のように一連のステートメントのまとまりを表します。デリゲート型は結合、比較、等値演算子をサポートしています。 | デリゲート型は、匿名関数のように一連のステートメントのまとまりを表します。デリゲート型は結合、比較、等値演算子をサポートしています。 | ||
デリゲート型の規定値は空のステートメント<code>{}</code>です。この型は<code>null</code>をとり得ます。デリゲート型への暗黙的な変換と明示的な変換の両方はサポートされていません。この型の型指定修飾子は<code>delegate</code>です。 | デリゲート型の規定値は空のステートメント<code>{}</code>です。この型は<code>null</code>をとり得ます。デリゲート型への暗黙的な変換と明示的な変換の両方はサポートされていません。この型の型指定修飾子は<code>delegate</code>です。 | ||
112行目: | 166行目: | ||
デリゲート型は、配列のように複数の要素を持つことができます。しかし、デリゲート型にはデリゲート型以外の要素を含めることはできません。 | デリゲート型は、配列のように複数の要素を持つことができます。しかし、デリゲート型にはデリゲート型以外の要素を含めることはできません。 | ||
デリゲートについての詳しい説明は[[デリゲート]]の記事を参照してください。デリゲート型のメソッドには次のものがあります。 | デリゲートについての詳しい説明は[[デリゲート]]の記事を参照してください。デリゲート型のメソッドには次のものがあります。 | ||
*[[ | *[[デリゲート#Invoke|delegate.Invoke]] | ||
*[[ | *[[デリゲート#BeginInvoke|delegate.BeginInvoke]] | ||
=type型= | *[[デリゲート#Length/Count|delegate.Length]] | ||
*[[デリゲート#Length/Count|delegate.Count]] | |||
==type型== | |||
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/api/alice/interpreter/type/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}} | |||
<code>type</code>型は、変数の型を表します。<code>type</code>型は比較、等値演算子をサポートしています。<code>type</code>型の規定値は、<code>type.None</code>です。<code>type</code>型への暗黙的な変換はサポートされていませんが、文字列型からの明示的な変換はサポートされます。この型の型指定修飾子は<code>type</code>です。<code>type</code>型のメソッドには次のものがあります。 | <code>type</code>型は、変数の型を表します。<code>type</code>型は比較、等値演算子をサポートしています。<code>type</code>型の規定値は、<code>type.None</code>です。<code>type</code>型への暗黙的な変換はサポートされていませんが、文字列型からの明示的な変換はサポートされます。この型の型指定修飾子は<code>type</code>です。<code>type</code>型のメソッドには次のものがあります。 | ||
*[[Type型のメソッド#Activate|type.Activate]] | *[[Type型のメソッド#Activate|type.Activate]] | ||
[[Category:基本]] | [[Category:基本]] |