Javaでは、次のように配列を初期化できます。
int numbers[] = new int[] {10, 20, 30, 40, 50}
Kotlinの配列初期化はどのように見えますか?
array()
に、サイドコメントで(非推奨)関数について言及しています
val numbers = 1..5
これは1から5までのint範囲を与えます
Javaでは、次のように配列を初期化できます。
int numbers[] = new int[] {10, 20, 30, 40, 50}
Kotlinの配列初期化はどのように見えますか?
array()
に、サイドコメントで(非推奨)関数について言及しています
val numbers = 1..5
これは1から5までのint範囲を与えます
回答:
val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50)
詳細については、Kotlin-基本タイプをご覧ください。
イニシャライザ関数を2番目のパラメータとして提供することもできます。
val numbers = IntArray(5) { 10 * (it + 1) }
// [10, 20, 30, 40, 50]
intArrayOf
以上使用するのが望ましいarrayOf
ですか?したがってIntArray
、利点はありArray<Int>
ますか?
listOf(10, 20, 30, 40, 50)
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/KotlinPackage
ます。jdk1.8.0_241
Intellij IDEA を使用しています
(例えばkotlin builtinesを使用するときにすることを言及する価値がintArrayOf()
、longArrayOf()
、arrayOf()
クラスのコンストラクタに応じて呼び出しを経由して、あなたは、与えられた大きさのために(所望の値に、またはすべての値)のデフォルト値を持つ配列を初期化することができない、など)、代わりにあなたが初期化を行う必要があります。
// Array of integers of a size of N
val arr = IntArray(N)
// Array of integers of a size of N initialized with a default value of 2
val arr = IntArray(N) { i -> 2 }
IntArray(N) {i -> 2}
さらに(定数で初期化する場合)IntArray(N) {2}
次に例を示します。
fun main(args: Array<String>) {
val arr = arrayOf(1, 2, 3);
for (item in arr) {
println(item);
}
}
遊び場を使用して言語機能をテストすることもできます。
コトリンにはいくつかの方法があります。
var arr = IntArray(size) // construct with only size
次に、ユーザー、別のコレクション、または必要な場所の初期値を入力します。
var arr = IntArray(size){0} // construct with size and fill array with 0
var arr = IntArray(size){it} // construct with size and fill with its index
次のような組み込み関数で配列を作成することもできます
var arr = intArrayOf(1, 2, 3, 4, 5) // create an array with 5 values
別の方法
var arr = Array(size){0} // it will create an integer array
var arr = Array<String>(size){"$it"} // this will create array with "0", "1", "2" and so on.
Intの代わりにdoubleArrayOf()
またはDoubleArray()
または任意のプリミティブ型を使用することもできます。
var arr = IntArray(size, { it * 1 } )
と同じです var arr = IntArray(size){it}
Kotlinでは、使用して配列を作成することができarrayOf()
、intArrayOf()
、charArrayOf()
、booleanArrayOf()
、longArrayOf()
機能を。
例えば:
var Arr1 = arrayOf(1,10,4,6,15)
var Arr2 = arrayOf<Int>(1,10,4,6,15)
var Arr3 = arrayOf<String>("Surat","Mumbai","Rajkot")
var Arr4 = arrayOf(1,10,4, "Ajay","Prakesh")
var Arr5: IntArray = intArrayOf(5,10,15,20)
古い質問ですが、範囲を使用したい場合:
var numbers: IntArray = IntRange(10, 50).step(10).toList().toIntArray()
以下とほぼ同じ結果が得られます。
var numbers = Array(5, { i -> i*10 + 10 })
結果:10、20、30、40、50
最初のオプションはもう少し読みやすいと思います。どちらも機能します。
あなたはこの方法を使うことができます
var numbers=Array<Int>(size,init)
var numbers=IntArray(size,init)
var numbers= intArrayOf(1,2,3)
例
var numbers = Array<Int>(5, { i -> 0 })
initはデフォルト値を表します(initialize)
init
in Array<Int>()
との例を挙げればIntArray()
、答えが今のところあまり役に立ちません。
Kotlin言語は、オーバーヘッドボクシングせずにプリミティブ型の配列を表現するためのクラスを特化しています。例えば- 、、IntArray
これらのクラスは、親への継承関係がないことを言うことなど私の必要性クラスを、彼らはメソッドとプロパティの同じセットを持っています。それぞれに対応するファクトリ関数もあります。したがって、Kotlinで値を使用して配列を初期化するには、次のように入力するだけです。ShortArray
ByteArray
Array
val myArr: IntArray = intArrayOf(10, 20, 30, 40, 50)
...またはこの方法:
val myArr = Array<Int>(5, { i -> ((i+1) * 10) })
myArr.forEach { println(it) } // 10, 20, 30, 40, 50
今、あなたはそれを使うことができます:
myArr[0] = (myArr[1] + myArr[2]) - myArr[3]
お役に立てれば。
次のようにInt配列を作成できます。
val numbers = IntArray(5, { 10 * (it + 1) })
5はInt Arrayサイズです。ラムダ関数は要素のinit関数です。[0,4]の「it」範囲、および[1,5]の1つのmake範囲
原点関数は次のとおりです。
/**
* An array of ints. When targeting the JVM, instances of this class are
* represented as `int[]`.
* @constructor Creates a new array of the specified [size], with all elements
* initialized to zero.
*/
public class IntArray(size: Int) {
/**
* Creates a new array of the specified [size], where each element is
* calculated by calling the specified
* [init] function. The [init] function returns an array element given
* its index.
*/
public inline constructor(size: Int, init: (Int) -> Int)
...
}
Arrays.ktで定義されているIntArrayクラス
次に示すように、既存の標準ライブラリメソッドを使用するだけです。
val numbers = intArrayOf(10, 20, 30, 40, 50)
ただし、特別なコンストラクタを使用することは理にかなっています。
val numbers2 = IntArray(5) { (it + 1) * 10 }
サイズと値を初期化する方法を説明するラムダを渡します。ここにドキュメントがあります:
/**
* Creates a new array of the specified [size], where each element is calculated by calling the specified
* [init] function. The [init] function returns an array element given its index.
*/
public inline constructor(size: Int, init: (Int) -> Int)
なぜ誰も最も単純な答えを出さなかったのかと思います。
val array: Array<Int> = [1, 2, 3]
私の元の回答へのコメントの1つに従って、これは注釈引数で使用された場合にのみ機能することに気付きました(これは本当に私には予想外でした)。
Kotlinがアノテーションの外で配列リテラルを作成することを許可していないようです。
たとえば、args4jライブラリの@Optionを使用して次のコードを見てください。
@オプション( 名前= "-h"、 エイリアス= ["--help"、 "-?"]、 使用法=「このヘルプを表示する」 ) var help:Boolean = false
オプション引数「エイリアス」はタイプです Array<String>
私の場合、引き出しのアイテムを初期化する必要があります。以下のコードでデータを記入します。
val iconsArr : IntArray = resources.getIntArray(R.array.navigation_drawer_items_icon)
val names : Array<String> = resources.getStringArray(R.array.navigation_drawer_items_name)
// Use lambda function to add data in my custom model class i.e. DrawerItem
val drawerItems = Array<DrawerItem>(iconsArr.size, init =
{ index -> DrawerItem(iconsArr[index], names[index])})
Log.d(LOGGER_TAG, "Number of items in drawer is: "+ drawerItems.size)
カスタムモデルクラス
class DrawerItem(var icon: Int, var name: String) {
}
グローバルでint配列を宣言
var numbers= intArrayOf()
次のonCreateメソッドは配列を値で初期化します
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//create your int array here
numbers= intArrayOf(10,20,30,40,50)
}
Javaでは、次のように配列を初期化できます。
int numbers[] = new int[] {10, 20, 30, 40, 50}
しかし、Kotlinでは、配列は次のような多くの方法で初期化されました。
arrayOf() 関数を使用できる任意のジェネリック型の配列:
val arr = arrayOf(10, 20, 30, 40, 50)
val genericArray = arrayOf(10, "Stack", 30.00, 40, "Fifty")
Kotlinのユーティリティ関数を使用して配列を初期化できます
val intArray = intArrayOf(10, 20, 30, 40, 50)
このようにして、koltinでint配列を初期化できます。
val values: IntArray = intArrayOf(1, 2, 3, 4, 5,6,7)
私の答えは@marounを補完するもので、配列を初期化するいくつかの方法があります。
配列を使用する
val numbers = arrayOf(1,2,3,4,5)
厳密な配列を使用する
val numbers = intArrayOf(1,2,3,4,5)
マトリックスのタイプを混合する
val numbers = arrayOf(1,2,3.0,4f)
ネスト配列
val numbersInitials = intArrayOf(1,2,3,4,5)
val numbers = arrayOf(numbersInitials, arrayOf(6,7,8,9,10))
動的コードから始める能力
val numbers = Array(5){ it*2}