次のような文字列配列の長さを取得する方法
str 30 name[];//dynamic array
長さを取得するために次を使用しましたが、「変数の型は CLASS ではありません」というエラーが表示されます。
int len=name.get_length();
次のような文字列配列の長さを取得する方法
str 30 name[];//dynamic array
長さを取得するために次を使用しましたが、「変数の型は CLASS ではありません」というエラーが表示されます。
int len=name.get_length();
申し訳ありませんが、文字列配列のサイズを返す組み込み関数はありません。配列に何を入れるかは完全に制御できるので、配列が存在する必要はありません!
組み込み関数dimof
は、割り当てられた配列のサイズを返します。これは、 のような固定サイズの配列に対してのみ実用的な値であり、str 30 name[20]
20 をdimof(name)
返します。
制御を維持するクリーンな方法は、setter 関数を使用することです。
static void TestArray(Args _args)
{
str 30 name[];
int n = 0;
int i;
void nameSet(int _i, str 30 _name)
{
n = max(n,_i);
name[_i] = _name;
}
;
nameSet(2,'abc');
nameSet(4,'def');
for (i = 1; i <= n; i++)
info(name[i]);
}
上限のインデックス制限がないため、アクセスname[7]
は完全に有効であり、この場合は空白の値が返されます。これは、常にすべての穴を使用し、空白を保存しない場合に有利に使用できます。
static void TestArray(Args _args)
{
str 30 name[];
int i;
name[1] = 'abc';
name[2] = 'def';
for (i = 1; name[i]; i++)
info(name[i]);
}
より高いインデックス (この場合は 2 より大きい) にアクセスすると、実際には配列の割り当てサイズが増加する可能性があることに注意してください。
機能が必要ですdimOf
。参照を見てください: