W Javie tablica może być inicjowany, takich jak:Jak zainicjować tablicę w Kotlin za pomocą wartości?
int numbers[] = new int[] {10, 20, 30, 40, 50}
Jak tablicę inicjalizacja wyglądać Kotlin Like?
W Javie tablica może być inicjowany, takich jak:Jak zainicjować tablicę w Kotlin za pomocą wartości?
int numbers[] = new int[] {10, 20, 30, 40, 50}
Jak tablicę inicjalizacja wyglądać Kotlin Like?
Można:
val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50)
Zobacz Kotlin - Basic Types szczegóły.
Dzięki. Ostatnio Kotlin sugeruje użycie 'intArrayOf'. –
Czy lepiej jest używać 'intArrayOf' zamiast' tablicaOf'? W ten sposób "IntArray" ma przewagę nad 'Array
Właściwie to nie jestem świadomy najnowszego "intArrayOf" Kotlin, byłbym zadowolony z odniesienia się do tego! – Maroun
Oto przykład:
fun main(args: Array<String>) {
val arr = arrayOf(1, 2, 3);
for (item in arr) {
println(item);
}
}
Można również użyć playground przetestować możliwości językowe.
Warto wspomnieć, że podczas korzystania Kotlin builtines (np intArrayOf()
, longArrayOf()
, arrayOf()
itp) nie są w stanie zainicjować tablicę z wartościami domyślnymi (lub wszystkie wartości do żądanej wartości) dla danego rozmiaru, a nie trzeba zainicjować poprzez wywołanie zgodnie z konstruktorem klasy.
// 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})
Ta druga domyślna wartość init przy użyciu lambda była super pomocna! Dzięki – rf43
można użyć tej metody
var numbers=Array<Int>(size,init)
var numbers=IntArray(size,init)
var numbers= intArrayOf(1,2,3)
przykład
var numbers = Array<Int>(5, { i -> 0 })
startowych reprezentuje wartość domyślną (zainicjować)
Pomaga, jeśli podajesz przykłady dla 'init' w' Array
Odpowiedź została zmieniona –
Stare pytanie, ale jeśli chcesz używać zakres:
var numbers: IntArray = IntRange(10, 50).step(10).toList().toIntArray()
Daje prawie taki sam wynik jak:
var numbers = Array(5, { i -> i*10 + 10 })
wyniki: 10, 20, 30, 40, 50
Myślę, że pierwsza opcja jest nieco bardziej czytelny. Obie działają.
"pierwsza opcja jest trochę bardziej czytelna" - dyskusyjna :) – Antek
W Kotlinie Istnieje kilka sposobów.
var arr = IntArray(size) // construct with only size
Następnie po prostu wartość początkowa od użytkowników lub z innej kolekcji lub gdziekolwiek chcesz.
var arr = IntArray(size, { 0 }) // construct with size and fill array with 0
var arr = IntArray(size, { it * 1 }) // construct with size and fill with its index
Możemy również stworzyć tablicę z wbudowaną funkcją jak-
var arr = intArrayOf(1, 2, 3, 4, 5) // create an array with 5 values
Innym sposobem
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.
Można również użyć doubleArrayOf()
lub DoubleArray()
lub dowolny rodzaj prymitywnego zamiast Int.
Myślę, że jedną rzecz, o której warto wspomnieć i która nie jest wystarczająco intuicyjna w dokumentacji, jest to, że gdy używasz funkcji fabryki do utworzenia tablicy, a Ty określasz jej rozmiar, tablica jest inicjowana wartościami równymi ich wartości indeksu.Na przykład w tablicy takiej jak ta: val array = Array(5, { i -> i })
, przypisane początkowe wartości to [0,1,2,3,4]
i nie powiedz, [0,0,0,0,0]
. Dlatego z dokumentacji val asc = Array(5, { i -> (i * i).toString() })
uzyskano odpowiedź: ["0", "1", "4", "9", "16"]
W moim przypadku muszę zainicjalizować moje elementy szuflady. Wypełniam dane poniższym kodem.
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)
model niestandardowy wykładowa
class DrawerItem(var icon: Int, var name: String) {
}
To nie odpowiada na pytanie w sensowny sposób. –
Proszę sprawdzić komentarz, w którym użyłem funkcji lambda do dodawania przedmiotów. – Rahul
To nadal wydaje się skomplikowanym sposobem rozwiązania tego problemu, przynajmniej w porównaniu z innymi odpowiedziami. Spojrzałem też na moją poprzednią wiadomość i wydaje mi się, że jest to trudne z perspektywy czasu - przepraszam. –
Można spróbować to:
var a = Array<Int>(5){0}
intialize tablicę w ten sposób: val paramValueList : Array<String?> = arrayOfNulls<String>(5)
Można utworzyć tablicę Int takiego:
val numbers = IntArray(5, { 10 * (it + 1) })
5 to rozmiar międzywymiarowy. funkcja lambda jest funkcją inicjującą element. 'To zakres z [0,4], oraz 1 Zakres wprowadzone w [1,5]
funkcji pochodzenia jest:
/**
* 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)
...
}
klasy IntArray zdefiniowane w Arrays.kt
Może to mieć Spojrzenie na dokumenty: http://kotlinlang.org/docs/reference/basic-types.html – khlr
Dokumentacja nieco ukrywa odpowiedź. Zamiast podawać przykład kodu źródłowego, wspominają o (przestarzałej) funkcji 'array()' w komentarzu bocznym: _ Aby utworzyć tablicę, możemy użyć tablicy funkcji biblioteki() i przekazać jej wartości pozycji, tak aby tablica (1, 2, 3) tworzy tablicę [1, 2, 3] ._ –
Chociaż lubię Kotlin, ale mówię "Dokumentacja Kotlina" nie jest wystarczająco dobra (dowiedziałem się więcej z innych stron niż na stronie kotlinlang.org). –