したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

SphereScript言語仕様について

5wakaba:2009/08/14(金) 09:02:10
>>4 電プロさん
早速の返信ありがとうございます。

> 現状では、配列をまとめて初期化する方法はありません。(宣言時にゼロクリアされるだけです)
なるほど。

> int clear_score[5]={100,150,200,300,400};
> それに加え、上記記述だと配列の5番目に代入しているように見えるので、分かりにくい。(人間にとってもコンパイラにとっても)
他のスクリプト言語ならばこの場合だと配列の6番目に配列を代入している認識になりますね。
# 型宣言をはずせばclear_score配列の6番目の要素に連想配列またはJSON形式の無名クラスインスタンスを入れている形になりますね。
# RubyとJavaScriptではそういう解釈になります。おそらくPHP6でもそうなるはず。
# 右辺が配列インスタンスならばJavaでもC#でもそうか。

> プロにとってはまどろっこしいですが、
まどろっこしいというよりも、経験からくる期待する動作と異なった動きからバグ、あるいは使えない言語と認識されそうで怖い所ですが・・・
また、他言語の概念を流用できないため、他の言語を使っての説明も困難になります。

> //int clear_score[5]; //変数宣言が必要な場合はこう
> clear_score[]={100,100,100,100,100}; //中身を100で埋める
> ...
> clear_score[]={stage_id*50+200,stage_id*60+200,stage_id*80+200,stage_id*100+300,stage_id*100+500}; //後から配列をまとめて更新
> ...
> n=clear_score[level]; //配列要素にアクセス
これは危険な気がします。
他のスクリプト言語での期待される結果は以下になりますね。

clear_score[]={100,100,100,100,100}; //clear_score配列に0番目の要素を作り配列{100,100,100,100,100}を代入
clear_score[]={stage_id*50+200,stage_id*60+200,stage_id*80+200,stage_id*100+300,stage_id*100+500}; //途中で追加が無ければ1番目の要素を作り配列を代入
n=clear_score[level]; //levelが0ならば配列{100,100,100,100,100}を取得できる。

スクリプト言語を名乗る以上、記述の参考にするのはスクリプト言語にしたほうが他言語経験者にとってはギャップが最小化されるのではないでしょうか?

追伸:
{}の使い方もヤバイかもしれません。
{}でくくられた要素はJavaScript(と、おそらくPHP6。導入検討中)ではJSON形式の、Rubyでは連想配列として見なされます。
このギャップは看過できないレベルになると思われます。
また、上記言語に限らず「{}はJSON形式として扱おう」という流れが出来つつあります。
そのために言語の記法の拡張まで行われている現状において、別の意味を持たせるのは危険だと考えられます。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板