2017-04-30 15 views
0

私はあなたが宣言class Widgetを持っている場合は、あなたがそうのような100のWidgetの配列を作成することができますC++のクラスの配列がKotlin相当++クラス配列

class Widget { 
public: 
    int x;    
    float w; 
} 

Widget data[100]; 
+1

C/C++を知っていて、Java/Kotlinを学びたい人のためのメモ。 JavaとKotlinでは、変数を宣言するだけではなく、明示的にeを初期化する必要があります。 g。 KotlinのJavaまたは 'val widget:Widget'の' Widget widget; 'は新しいウィジェットを作成せず、' Widget widget = new Widget(); 'または' val widget:Widget = Widget() 'となります。同様に、 'val data:Array 'は単なるvarableであり、 'val data:Array = Array(100){Widget()}'は配列のオブジェクトでもあり、同じように動作するので配列の初期化です。また、Javaの 'new Something [x]'に相当するKotlinは 'arrayOfNulls (x)'です。 –

答えて

3

作るのKotlin相当を見つけようとしています:

val data = Array(100) { Widget() } 

Arrayコンストラクタには2つの引数があります。最初の引数は配列のサイズであり、2番目の引数はその要素を作成するための初期化関数です。この例では、デフォルトのコンストラクタをWidgetと呼びます。

また、この初期化関数は、要素の作成に必要な場合は、作成する要素のインデックスをパラメータとして受け取ります。

編集: @ Miha_x64は、上記のコメントでいくつかの点を強調しました。

arrayOfNullsを使用して、すぐに配置する要素を作成せずに配列を作成することもできます。

val nullableWidgets = arrayOfNulls<Widget>(100) 

これは、あなたの代わりにArray<Widget>Array<Widget?>を与え、そしてnullに配列の要素のすべてを初期化します。

関連する問題