破壊的変更の一覧

提供: AliceScript Wiki
2021年12月6日 (月) 05:44時点におけるMaster (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

AliceScriptの歴史を通じて、AliceScriptのバージョン間および異なる実装間で高いレベルの互換性を維持することに力が注がれてきました。 多くの開発者は、AliceScriptの異なる実装間の互換性とともに、AliceScriptの特定の実装のバージョン間についても高いレベルの互換性を期待します。 特に、以前のバージョンのAliceScript用に書かれたコードは、AliceScriptの新しいバージョンでもシームレスに動作することを期待します。 また、多くの開発者は、新しくリリースされたAlice.RuntimeにあるAPIが、それらのAPIが導入された初めのバージョンとも互換性があると期待します。

この記事では、AliceScriptまたはAlice.Runtimeに対して行われた変更のカテゴリと、それがアプリケーションの互換性に与える影響について説明します。

Typeプロパティ

AliceScriptRC1以前のバージョンでは、Typeプロパティはその値の型を表す文字列表現を返していました。AliceScriptRC2からはTypeプロパティはtype型を返すため、戻り値の型が変わります。 この変更による影響を緩和するために、type型からstring型への一方向の暗黙的な変換が用意されているため、この変更は承認されました。

定義されていない変数への値の代入の禁止

AliceScriptRC1以前のバージョンでは、定義されていない変数にもvarキーワードを使用しないで変数を定義することができました。これは未アクセスの変数に対して値が存在するか確認できないという潜在的な欠陥が存在しているため使用できなくなります。次は未定義の変数a12345を代入し定義するコードです。AliceScriptRC1以前では動作していましたが今は動作しません。

a = 12345;

AliceScriptRC2以降でこれと同じ動作を行うことができる唯一の方法は次の通りです。

var a = 12345;

変数を定義した後の代入に関する動作に変更はありません。この変更は承認されました。

暗黙的な型変換の廃止

AliceScriptRC1以前のバージョンでは、関数などの対応する型が与えられた型ではない場合、自動的にその値を対応する型に変換します。これを暗黙的な型変換とよびますが、これは本来の用途に使用できない値などが与えられても例外が発生することなく予期しない動作をしてしまう可能性がありました。これを解消するために暗黙的な型変換は廃止されました。この変更は承認されました。

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