NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 7 - Pole v Kotlinu

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
neutr
Člen
Avatar
neutr:21.4.2018 12:11

Opravdu jsem velice zvědavý co bude tím překvapením. Velice bych pohledával například automatické předimenzování pro přídání a ubrání prvku spolu s automatickým přetříděním. Také bych uvítal možnost vkládat prvky do pole aniž bych musel přídávat prvek na konec a pak mu udělat místo oditerováním zbytku na poslední (nový), nebo to řešit pomocí split/merge. Ještě více bych si cenil těchto operací na vícedimenzionálních polích. Zejména u kolekcí.

Konkrétně klasická array(x,y), nebo i array(x,y,z) do typu array(x)(y), respektive array(x)(y)(z) - tedy do nesymetricých kolekcí, nebo alepoň sofistikovanější operace s Empty prvky symetrických polí (objektů - matic).


Mimo svých velkých očekávání bych si dovolil poznámku k popisu metod pole - příklad sort() a sorted(). Musel jsem se 3x vrátit aby mi došlo, že v podstatě sort() provede setřídění pro výstup, ale zůstane v původním rozložení, zatímco sorted() udělá změnu přímo v array. On totiž výstup podle doporučení vydá úplně stejný výsledek. Určitě není snadné najít rozdíl

val simpsonovi_sorted = simpsonovi.sor­tedArray()
poznámkou - simpsonovi_sorted = arrayOf("Bart", "Homer", "Lisa", "Maggie", "Marge")
simpsnovi_sorted
for (simpson in simpsonovi_sorted) {

Pokud se mýlím tak mne opravte. Pole zpracované jako sorted() stačí vypsat podle indexu, ale třídit se už nemusí - je už setříděné. Ono to tam sice je, ale je to málo zřetelné když hledáme rozdíl. Díky

 
Odpovědět
21.4.2018 12:11
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na neutr
gcx11:21.4.2018 19:24

Pokud člověk neví předem, kolik prvků potřebuje uložit, tak se hodí MutableList.

val items = mutableListOf<Int>()
items.add(1)
items.add(2)

S tím automatickým přetříděním je to složitější. Nejlepší je mít nějakou vlastní kolekci, která využívá toho, že je zbytek setříděný, ale to je složitější na napsání a bohužel Kotlin (Java) přímo něco takového nemá.

Co by šlo použít, tak je napsat si vlastní extension funkci. Příklad:

inline fun <reified T: Comparable<T>> MutableList<T>.addAndSort(item: T) {
    add(item)
    sort()
}

fun main(args: Array<String>) {
    val items = mutableListOf(7, 3, 6)
    items.addAndSort(5)
    print(items) // [3, 5, 6, 7]
}

Mimo svých velkých očekávání bych si dovolil poznámku k popisu metod pole - příklad sort() a sorted()

Je to složitější, sort provede setřídění na vstupním poli a nevrací nic, sorted vrátí nový seznam (List), který obsahuje seřazená data, ale původní pole nechá být a sortedArray dělá to samé, akorát vrací zase pole (Array).

 
Odpovědět
21.4.2018 19:24
Avatar
Michal Pariš:21.3.2019 10:07

trochu nechapem tej casti

Metoda sort() seřadí již existující pole (takže musí být deklarované pomocí var)

coho presne sa to tyka? lebo dalej je pouzite stale val a mne to zoradenie tiez funguje s val-om.

Odpovědět
21.3.2019 10:07
Those who ask a question, are stupid for 30 seconds. Those who never ask, are stupid for life.
Avatar
Samuel Kodytek
Tvůrce
Avatar
Odpovídá na Michal Pariš
Samuel Kodytek:21.3.2019 11:58

sort() ti upraví tu stávájící instanci (pole), mezitím co sorted() ti vratí nové pole. Tohle se ti bude především hodit u OOP. Více to vysvětluji v tomto článku.

Hodí se obě dvě metody, a těžce se vysvětluje proč tomu tak je začátečníkovi (omlouvám se pokud nejsi začátečník :p )

Odpovědět
21.3.2019 11:58
There is more than one way to screw it
Avatar
Odpovídá na Samuel Kodytek
Michal Pariš:21.3.2019 13:14

tomu sort / sorted chapem len nechapem preco tam je napisane ze sa musi pole deklarovat ako var a pritom je vsade deklarovane ako val :)

tak to teda beriem tak ze zatial mi to netreba a pockam az sa dostanem na to OOP ;)

Odpovědět
21.3.2019 13:14
Those who ask a question, are stupid for 30 seconds. Those who never ask, are stupid for life.
Avatar
Samuel Kodytek
Tvůrce
Avatar
Odpovídá na Michal Pariš
Samuel Kodytek:21.3.2019 13:36

Pole se může deklarovat obojím val nebo var.

val jen říká, že nemůžeš přepsat tu proměnou. Nějaké datové typy můžou být tzv. Třídy a mají v sobě ještě další proměnné, které ale už můžou jít přepsat, protože jsou třeba var. Jak jsem již říkal, špatně se to vysvětluje, bez znalostí OOP :/, ale určitě to pochopíš až se dostaneš k OOP :)

Odpovědět
21.3.2019 13:36
There is more than one way to screw it
Avatar
Guláš
Člen
Avatar
Guláš:19.6.2020 10:08

K čemu je dobrá tato podmínka " if (pozice != -1) ", ??

 
Odpovědět
19.6.2020 10:08
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Guláš
Alesh:19.6.2020 10:43

Ošetřuje situaci, kdy zadaný text není nalezen v kolekci.

Metoda nám najde první výskyt daného prvku v poli a vrátí jeho index jako Int. Může se stát, že prvek v poli není, v takovém případě metoda vrátí -1.

 
Odpovědět
19.6.2020 10:43
Avatar
Guláš
Člen
Avatar
Guláš:19.6.2020 12:22

Co dělá vlastnost** size** ??

 
Odpovědět
19.6.2020 12:22
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Guláš
Alesh:19.6.2020 12:26

Zkus si ten článek přečíst. ;-)

size jsme si již zmínili, obsahuje (vrací) počet prvků v poli.

 
Odpovědět
19.6.2020 12:26
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 23.