「WSOFTScriptからの移行」の版間の差分
編集の要約なし |
編集の要約なし |
||
(同じ利用者による、間の23版が非表示) | |||
1行目: | 1行目: | ||
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/tutorial/migration-from-wsoftscript/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}} | |||
[[Category:チュートリアル]] | |||
AliceScriptによる開発と従来のWSOFTScriptによる開発の類似点と相違点について説明します。 | AliceScriptによる開発と従来のWSOFTScriptによる開発の類似点と相違点について説明します。 | ||
{{Alert|WSOFTScriptバージョン2020LTS及び0.07R4以降、新たなバージョンのWSOFTScriptの開発は行われません。WSOFTは、2022年6月18日に、全てのWSOFTScriptおよびWSOFTScript.XならびにWSOFTScript.Pocketの各バージョンのサポートを終了します。||4|1em}} | |||
今後のWSOFTScriptのサポートについては[https://wsoft.gq/script/?id=WSOFTScriptのライフサイクル WSOFTScriptのライフサイクル]を参照してください。 | |||
この記事では、AliceScriptによる開発に関心があるWSOFTScript開発者を対象に、WSOFTScriptとAliceScriptの開発の違いを解説しています。 | この記事では、AliceScriptによる開発に関心があるWSOFTScript開発者を対象に、WSOFTScriptとAliceScriptの開発の違いを解説しています。 | ||
WSOFTScriptについて詳しく知るには[https://wsoft.gq/script/ WSOFTScriptのサイト]を参照してください。 | |||
=はじめに= | =はじめに= | ||
AliceScriptが登場するまで、簡易的なコンソールアプリケーションとShangri-laによるデスクトップアプリケーションの開発は、WSOFTScriptを用いて行われて来ました。まず第一に、WSOFTScriptのメインライブラリは複雑で、サイズも大きなものでした。また、組み込みの例外処理やデバッグ支援機能はまだ未成熟で、信頼性の高いアプリケーションを開発するには脆弱でもありました。 | AliceScriptが登場するまで、簡易的なコンソールアプリケーションとShangri-laによるデスクトップアプリケーションの開発は、WSOFTScriptを用いて行われて来ました。まず第一に、WSOFTScriptのメインライブラリは複雑で、サイズも大きなものでした。また、組み込みの例外処理やデバッグ支援機能はまだ未成熟で、信頼性の高いアプリケーションを開発するには脆弱でもありました。 | ||
63行目: | 69行目: | ||
print(args); | print(args); | ||
} | } | ||
Func(“A”,”B”,”C”);//出力:[“A”,”B”,”C”] | |||
この時、<code>args</code>は自動的に配列型になります。引数は省略することもできます。 | この時、<code>args</code>は自動的に配列型になります。引数は省略することもできます。 | ||
関数について詳しくは、[[関数]]も参照してください。 | 関数について詳しくは、[[関数]]も参照してください。 | ||
=変数= | |||
変数に関する重要な変更についても注意が必要です。まず、WSOFTScriptとは違い、AliceScriptでは、未定義の変数を宣言するときに<code>var</code>キーワードが必須になりました。また、一度宣言された変数に<code>var</code>キーワードを使うことはできません。 | |||
スコープは、その変数が有効な範囲です。WSOFTScriptでは、すべての変数はグローバル変数として定義されていました。AliceScriptでは、通常の変数(これをローカル変数と呼ぶことにします)は、そのスコープとそれ以下のスコープの範囲に限られます。AliceScriptでグローバル変数を宣言するには、<code>var</code>キーワードの後に<code>global</code>修飾子をつけます。次に例を示します。 | |||
var global abc = “ABC”; | |||
定数は、AliceScriptで導入された新しい機能です。定数は、一度のみ宣言でき、一度定義するとそれに再度代入することはできません。宣言するには<code>var</code>キーワードの代わりに<code>const</code>キーワードを使用します。定数にもやはりローカル定数とグローバル定数が存在します。次の例では、ローカル定数<code>lconst</code>と<code>gconst</code>をそれぞれ定義します。 | |||
const lconst a = 1; | |||
const global gconst b = 2; | |||
変数について詳しく知るには、[[変数]]を参照してください。 | |||
=繰り返し構造の違い= | =繰り返し構造の違い= | ||
AliceScriptでは、WSOFTScriptとは異なり完全な<code>for</code>文と<code>foreach</code>文の分離が図られました。AliceScriptでは配列から一つ一つ取り出して実行するために<code>for</code>文を使用することはできません。また、<code>foreach | AliceScriptでは、WSOFTScriptとは異なり完全な<code>for</code>文と<code>foreach</code>文の分離が図られました。AliceScriptでは配列から一つ一つ取り出して実行するために<code>for</code>文を使用することはできません。また、<code>foreach(item as array)</code>や、<code>foreach(item : array)</code>の形は使用できなくなりました。<code>foreach(item in array)</code>を使用することを検討してください。また、<code>array.Foreach(delegate(item));</code>の形も使用できます。次の例を参照してください。 | ||
var ary = [“a”,”b”,”c”]; | |||
ary.Foreach((item)=> | |||
{ | |||
print(item); | |||
}); | |||
//出力:a | |||
// b | |||
// c | |||
また、AliceScriptでは終了条件までループする<code>until</code>文は廃止されました。しかし、<code>while(!bool)</code>で代用することができます。 | |||
=型の違い= | |||
AliceScriptではWSOFTScriptからいくつかの型が追加または変更されました。次にそれらの型を示します。 | |||
==Bool型== | |||
WSOFTScriptでは<code>if</code>文や<code>while</code>文のように条件をとるステートメントには、<code>number</code>型の0を偽とし、非0を真としていました。<code>true</code>や<code>false</code>キーワードはそれぞれ1や0を返していました。 | |||
AliceScriptでは、真または偽のいずれかを表現することのできる<code>bool</code>型が導入され、<code>bool</code>型を厳格に求めるような場面が頻繁にあります。これは、比較式が必要な場面で代入式も使用できてしまい、混乱を招く恐れがあったためです。 | |||
AliceScriptでは、<code>true</code>や<code>false</code>キーワードはそれぞれ<code>bool</code>型の<code>true</code>や<code>false</code>を返します。次に例を示します。 | |||
var condition = (1 == 1); | |||
print(condition.type);//出力例:BOOLEAN | |||
==Type型== | |||
AliceScriptには変数の型を表現する<code>type</code>型が存在します。全ての変数は<code>Type</code>プロパティを実装していて、その変数の型を表す値を取得することができます。これはWSOFTScriptの<code>Type</code>プロパティに似ています。しかし、WSOFTScriptの<code>Type</code>プロパティは<code>type</code>型ではなく<code>string</code>型でその値を表す文字列表現を返します。<code>string</code>、<code>number</code>、<code>bool</code>キーワードなどはそれぞれの型の値を表す定数です。また、[[式#型変換演算子|型変換演算子<code>as</code>]]を使用することでその型に変数を明示的に変換することができます。次に例を示します。 | |||
var num = 123; | |||
print(num.type);//出力例:NUMBER | |||
var str = (num as string); | |||
print(str.type);//出力例:STRING |