「破壊的変更の一覧」の版間の差分

編集の要約なし
編集の要約なし
7行目: 7行目:


==Typeプロパティ==
==Typeプロパティ==
{|class="wikitable" algin=“center”
|+style="white-space:nowrap"|
!colspan="2"|変更のステータス
|承認
|AliceScriptRC1から
|}
AliceScriptRC1以前のバージョンでは、Typeプロパティはその値の型を表す文字列表現を返していました。AliceScriptRC2からはTypeプロパティは<code>type</code>型を返すため、戻り値の型が変わります。
AliceScriptRC1以前のバージョンでは、Typeプロパティはその値の型を表す文字列表現を返していました。AliceScriptRC2からはTypeプロパティは<code>type</code>型を返すため、戻り値の型が変わります。
この変更による影響を緩和するために、<code>type</code>型から<code>string</code>型への一方向の暗黙的な変換が用意されているため、この変更は承認されました。
この変更による影響を緩和するために、<code>type</code>型から<code>string</code>型への一方向の暗黙的な変換が用意されているため、この変更は承認されました。
==定義されていない変数への値の代入の禁止==
==定義されていない変数への値の代入の禁止==
{|class="wikitable" algin=“center”
|+style="white-space:nowrap"|
!colspan="2"|変更のステータス
|承認
|AliceScriptRC1から
|}
AliceScriptRC1以前のバージョンでは、定義されていない変数にも<code>var</code>キーワードを使用しないで変数を定義することができました。これは未アクセスの変数に対して値が存在するか確認できないという潜在的な欠陥が存在しているため使用できなくなります。次は未定義の変数<code>a</code>に<code>12345</code>を代入し定義するコードです。AliceScriptRC1以前では動作していましたが今は動作しません。
AliceScriptRC1以前のバージョンでは、定義されていない変数にも<code>var</code>キーワードを使用しないで変数を定義することができました。これは未アクセスの変数に対して値が存在するか確認できないという潜在的な欠陥が存在しているため使用できなくなります。次は未定義の変数<code>a</code>に<code>12345</code>を代入し定義するコードです。AliceScriptRC1以前では動作していましたが今は動作しません。
  a = 12345;
  a = 12345;
15行目: 29行目:
  var a = 12345;
  var a = 12345;
変数を定義した後の代入に関する動作に変更はありません。この変更は承認されました。
変数を定義した後の代入に関する動作に変更はありません。この変更は承認されました。
=変数/関数のスコープ=
=変数/関数のスコープ=  
{|class="wikitable" algin=“center”
|+style="white-space:nowrap"|
!colspan="2"|変更のステータス
|承認
|AliceScriptGMから
|}
 
AliceScriptGM以前のバージョンでは、変数と関数、定数はすべてグローバルとして定義されていました。これは複数回同じファイルを実行する際に重複定義が発生してしまうおそれがあるなどの潜在的な欠陥を有していました。AliceScriptGMでは、スコープが導入され、そのスコープの範囲内で宣言された変数と関数、定数はいずれもその範囲外では使用できなくなりました。これはネストされたスコープに対しても有効です。この変更は承認されました。
AliceScriptGM以前のバージョンでは、変数と関数、定数はすべてグローバルとして定義されていました。これは複数回同じファイルを実行する際に重複定義が発生してしまうおそれがあるなどの潜在的な欠陥を有していました。AliceScriptGMでは、スコープが導入され、そのスコープの範囲内で宣言された変数と関数、定数はいずれもその範囲外では使用できなくなりました。これはネストされたスコープに対しても有効です。この変更は承認されました。
==暗黙的な型変換の廃止==
==暗黙的な型変換の廃止==
{|class="wikitable" algin=“center”
|+style="white-space:nowrap"|
!colspan="2"|変更のステータス
|承認
|AliceScriptRC1から
|}
AliceScriptRC1以前のバージョンでは、関数などの対応する型が与えられた型ではない場合、自動的にその値を対応する型に変換します。これを暗黙的な型変換とよびますが、これは本来の用途に使用できない値などが与えられても例外が発生することなく予期しない動作をしてしまう可能性がありました。これを解消するために暗黙的な型変換は廃止されました。この変更は承認されました。
AliceScriptRC1以前のバージョンでは、関数などの対応する型が与えられた型ではない場合、自動的にその値を対応する型に変換します。これを暗黙的な型変換とよびますが、これは本来の用途に使用できない値などが与えられても例外が発生することなく予期しない動作をしてしまう可能性がありました。これを解消するために暗黙的な型変換は廃止されました。この変更は承認されました。


また、もう一つの解決策として、[[関数#引数|引数の型指定]]を行うことも検討してください。
また、もう一つの解決策として、[[関数#引数|引数の型指定]]を行うことも検討してください。