LotusNotesな日々IBM社のLotusNotesに関係する何かを日々語ってるようなきがしないでもないブログです。 

スポンサーサイト

   ↑  --/--/-- (--)  カテゴリー: スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(記事編集) http://mesosune.blog123.fc2.com/?overture" target="_new

--/--/-- | Comment (-) | HOME | ↑ ページ先頭へ |

【雑記】各言語の配列の扱いの違い

   ↑  2012/06/01 (金)  カテゴリー: 雑記
言語によって大きく扱いが異なる、
「配列」
についての解説です。

「固定長配列」とか「可変長配列」という言葉はそもそもC言語でよく使われる言葉でLotusScriptに存在しない等、
そもそも「固定長」とか「可変長」も言語によって言葉の意味合いが違うのですが、
「固定長配列」
「可変長配列」
の2つに分けるとどっちの形になるかを
書きながら説明したいとおもいます。

今回は、
@式、LotusScript、Java、JavaScriptについて、
LotusScriptに一応寄せたっぽい説明でかいてみます。

◯「固定長配列」:
決まった要素数しか格納できない配列を静的配列と言います。

◯「可変長配列」:
要素数によって自動的にサイズが拡張する配列のこと。動的配列とも言われます。
ライブラリで提供されるもの(C++、Java、.NETなど)と言語に組み込まれているもの(PerlやDなど)があります。
※動的配列はただの動的に確保された配列とは異なります
 (ReDim Preserve で動的に確保する場合は固定長、となります)

もう一つ、
「連想配列」という構造体が「配列」にはあります。
ただし、一般的に言う「連想配列」とはLotusScriptでは「リスト」と呼ぶ別要素のため、
今回は説明からは意図的に外しています。
(いわゆる”添字”で操作できるの場合はすべて連想配列扱いなんですが、考え方が違うので説明しづらいw;)

----------------------
■@式
----------------------
通常変数扱いです。

▼1.可変長配列
lists := @Explode(string,separators)

※R6.0~@forや [ ] で配列の添字などが使えるため、
他のプログラム経験がある方は非常に取っ付き易いはずです。
※@式で配列の扱いがわからない場合は、
どのバージョンでも、ヘルプ「リストを処理する」で検索すると
非常にわかりやすい解説がでてきます(笑)

----------------------
■LotusScript
----------------------
通常変数扱いです。

▼1.固定長配列

1)配列の宣言
Dim intArray() as Integer

型枠だけを用意します。
2)のようにRedimで枠の大きさを指定する必要があります。
他の言語では枠の大きさを定めることを生成と呼びます。
(なぜ生成というかはここでは説明する気はありませんw)

2)配列の生成
Redim intArray(10) as Integer

もちろん、宣言と生成を同時に行うことも出来ます。
宣言と生成を同時に行うには3)のようにします。

3)配列の宣言と生成を同時に行う
Dim intArray(10) as Integer

▼2.可変長配列

4)配列の生成を動的に行う(Variant型)

配列の生成を行う方法として
Redimを使用する代わりに、動的に指定する方法があります。
Splitで分割してVariant型に配列を生成します。
配列サイズは、Splitで分割したデータの数によって決まります。

Dim valArray as Variant
valArray = Split( "Sunday,Monday,Tuesday" , "," )

----------------------
■Java
----------------------
固定長配列と可変長配列で扱いが異なります。

▼1.固定長配列
参照型変数となります。
(クラスじゃないかといわれればばクラスなんですが、ここでは追求しません)

1)配列の宣言
配列型[ ] 配列名;
※配列型 配列名[ ] とすることもできますが、通常は配列型の後に[ ] を持ってきます。

例)
int[] intArray;

2)配列の生成
他のオブジェクトと同様、
配列の生成にもnew演算子を使用する必要があります。

配列名 = new 配列型[サイズ];

例)
intArray = new int[10];

3)配列の宣言と生成を同時に行う
配列の宣言と生成を同時に行うこともできます。

int[] intArray = new int[10];

4)初期化子
配列の宣言・生成を行う方法として
new演算子を使用する代わりに、初期化子を指定する方法があります。
初期化子は配列生成時に直接データを代入して配列を生成します。
初期化子を指定した場合の配列サイズは代入するデータの数によって決まります。

String[] stringArray = {"Sunday", "Monday", "Tuesday"};
System.out.print(stringArray[0]);

▼2.可変長配列
クラスを使用します。
ArrayListかMapを使用します。
上の2つはリストという要素であり、
厳密には配列じゃないので詳しい説明は省略します。

使用するには、
クラスであるため、
import java.util.*;
を頭に記載する必要があります。

また、クラスなので使用するには「リストの生成」=宣言となります。
List list = new ArrayList();
Map map = new HashMap();

----------------------
■JavaScript
----------------------
オブジェクト(プロトタイプ/参照型)となります。

▼1.可変長配列

1)配列の宣言/生成
var ary = New Array("","","","");
var ary = ["","","","",""];

宣言と生成は同時に行います。
配列の生成時にサイズを指定しないため、
可変長しか存在しないよ、
という扱いで良いかと思われます。
スポンサーサイト

(記事編集) http://mesosune.blog123.fc2.com/blog-entry-389.html

2012/06/01 | Comment (0) | Trackback (0) | HOME | ↑ ページ先頭へ |

Comment

コメントを投稿する 記事: 【雑記】各言語の配列の扱いの違い

お気軽にコメントをぞうぞ。
非公開 (管理人のみ閲覧可能なコメント) にしたい場合には、ロック にチェックを入れてください。

  任意 : 後から修正や削除ができます。
  非公開コメントとして投稿する。(管理人にのみ公開)
 

Trackback

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。