Функции высшего порядка в Kotlin: map, flatMap, fold, filter - понятный компактный код

  Рет қаралды 14,476

Seems Nerdy

Seems Nerdy

Күн бұрын

Пікірлер: 45
@borkman6285
@borkman6285 3 жыл бұрын
Очень крутая картинка, сануд аааа просто кайф для глаз и ушей. Конечно же спасибо за инфу!
@luyt2
@luyt2 Жыл бұрын
Класс. Отличное объяснение, вовремя убирается саунд на подложке. Отличный видимый шрифт в коде. Единственный момент, при использовании функции fold (7:20), есть переменные acc, i Мне кажется, что вместо i лучше использовать it. i это всё таки индекс элемента в массиве, а it - значение.
@evgenysamarin
@evgenysamarin 3 жыл бұрын
Музыка божественна
@igorgabaydulin8989
@igorgabaydulin8989 4 жыл бұрын
Поздравляю с первой сотней подписчиков :)
@SeemsNerdy
@SeemsNerdy 4 жыл бұрын
Данке шон, спасибо :)
@ЛёхаНеважно-т1д
@ЛёхаНеважно-т1д 3 жыл бұрын
Как же ты харош!
@oleg12395
@oleg12395 2 жыл бұрын
Контент огонь, а за саунд - отдельный респект 👍
@Majjabee-np9nq
@Majjabee-np9nq 2 жыл бұрын
Красавчик! Спасибо за видео!
@letsmakeatheworldabetterplace
@letsmakeatheworldabetterplace 2 жыл бұрын
Объясни пожалуйста когда пишешь код что к чему
@mikhaillazarev5378
@mikhaillazarev5378 5 ай бұрын
Автор пупсик ❤
@vitaliidmitriev7179
@vitaliidmitriev7179 4 жыл бұрын
Спасибо за видео! После просмотра остался вопрос, чем *fold()* отличается от *reduce()* . *fold()* - это и есть *reduce()* , но он принимает на вход initial значение для acc. На примере из видео: array = arrayOf(1, 2, 3, 4, 5, 0, -100, 1024, -100) array.fold(Int.MIN_VALUE) { acc, i -> max(acc, i) } На первой итерации acc == int.MIN_VALUE, i == array[0] == 1 array.reduce { acc, i -> max(acc, i) } На первой итерации acc == array[0] == 1, i == array[1] == 2 Если array будет пустым, то *fold()* вернёт массив из initial-значения, а *reduce()* выбросит *"java.lang.UnsupportedOperationException"* З.Ы.: концовки видео с питанием компа крутые
@SeemsNerdy
@SeemsNerdy 4 жыл бұрын
ЕЕеее :) Каеф :)
@danilbehappy4344
@danilbehappy4344 3 ай бұрын
не подскажете, чем map отличается от foreach?
@x_dilettante
@x_dilettante 4 жыл бұрын
Желаю успехов в развитии канала! На RU зоне каналы по программированию раскрутить очень сложно. Но ведь кто то должен популяризировать программинг в России...
@SeemsNerdy
@SeemsNerdy 4 жыл бұрын
Спасибо. Я хочу проверить будет ли канал развиваться на одной лишь органике, без раскруток
@Артем-ш8и5ц
@Артем-ш8и5ц 3 жыл бұрын
Лучший!
@staschernov928
@staschernov928 11 ай бұрын
А почему в первом случае нельзя было использовать хотя-бы split?
@apbuzzz
@apbuzzz 3 жыл бұрын
На 9:38 какой кнопкой превратил >= в односимвольный аналог?
@apbuzzz
@apbuzzz 3 жыл бұрын
@@andrey7530 Тоесть в файлике это 2 символа, просто рендерится как 1?
@yoldargazmanov2299
@yoldargazmanov2299 Жыл бұрын
Здравствуйте! Отличное видео! Подскажите пожалуйста как будет выглядеть код с помощью map чтобы поменять букву в слове?
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Жыл бұрын
map применяется ко всем элементам если нужно поменять одну букву то можно без map обойтись
@KabukiWarrior369
@KabukiWarrior369 3 жыл бұрын
Круто! Просто и понятно. Большое спасибо!
@Chekist2008
@Chekist2008 4 жыл бұрын
Блин, про flatMap примеров бы побольше... но все равно лайк!
@BeDb_MeDb
@BeDb_MeDb 3 жыл бұрын
Лолька. Первый варик, в цикле if == array.length - 1. Если большой текст надо обработать - это так-то плохо. Лучше было - забить на последнее слово и после этого цикла добавить цикл с конца до первого пробела || . || ,. Ясно, что второй варик чаще используют, но все-таки мне бросился этот if в глаза. Хотя да, цель была не в этом - да. Так даже чуть больше кода и еще сложнее читать, ахахах. Но тем не менее, не сочтите за критику;-)
@agp1444
@agp1444 3 жыл бұрын
а как нарисовать стрелочку, которую он на 4:16 рисуют? минус+больше не прокатывает - она неслитная получается)))) и >= на 9:35 - аналогичный вопрос
@SeemsNerdy
@SeemsNerdy 3 жыл бұрын
Это называется лигатуры, тебе нужны шрифты и немношк погуглить stackoverflow.com/questions/49206685/how-to-convert-to-%E2%89%A0-and-to-%E2%86%92-in-android-studio
@andrey7530
@andrey7530 4 жыл бұрын
Спасибо!
@VoidObj
@VoidObj 4 жыл бұрын
12:52 Так, либо лыжи не едут.. У меня так не работает с переменной "words". Если делать так, как в видео - то она получается массивом(функций?) "val words: List" Покурил бамбук, полечил таким образом: .map { filterEnding(',')(it)} , т.е. я передаю в функцию в мапе "it", по идее так и должно быть. Но почему работает у вас тогда? Единственная разница - я в андроид студии пробую, она по другим правилам работает? ))
@SeemsNerdy
@SeemsNerdy 4 жыл бұрын
На скобки обрати внимание. Можно map(filterending(“-“)), тогда у тебя лябмдой которую будет вызывать map станет то, сто вернет функция filterEnding. Можно map { filterEnding(“-“)(it) } - так у тебя на одну лябмду больше будет
@VoidObj
@VoidObj 4 жыл бұрын
@@SeemsNerdy Ааа!! Вот это я валенок)) Работает, спасибо! Но тут же созрел еще вопрос: .map(String::toLowerCase) .map(filterEnding(',')) .map(filterEnding('.')) .flatMap { it.toList() } .map { Log.i("MyLog", it.toString()) } При таком подходе flatmap не выдает все, что должен а только первые 2 символа с каждого слова. А вот если сюда понаставить бряк и по этому же коду пройтись в дебаг-режиме, то работает все корректно. Это как понимать? о_О
@SeemsNerdy
@SeemsNerdy 4 жыл бұрын
А можешь весь код куда-нибудь на gist.github.com закинуть?
@VoidObj
@VoidObj 4 жыл бұрын
@@SeemsNerdy вот этот код лежит в onCreate и выдает по 2 символа со слова gist.github.com/MaScFx/39cbe6ca5a9bb85db7ac66bfcde69e4a Что самое интересное, если его перенести без изменений в intellij idea- работает корректно. А в андроид студии что с эмулятором что с реальным девайсом - по 2 символа. скрин приложил там
@SeemsNerdy
@SeemsNerdy 4 жыл бұрын
Все ты правильно делаешь. Удали фильтр *MyLog* и увидишь там что-то в духе *I/chatty: uid=10086(...) identical 5 lines* Операционка видит что приложение одно и то же кидает в лог и затыкает его, вместо этого выводя вот такое вот. Вообще может помочь: *adb logcat -P "UID"* , UID - тот который стоит напротив твоей package name в выводе *adb logcat -S* , в списке самых chattiest apps, но у меня правда эта пижня не заработала. Второй вариант - склей в строку и ее в лог
@zhanyshmasirov4611
@zhanyshmasirov4611 3 жыл бұрын
Mann was du uns bringst bei für neue menschen dei lernen, Kotlin sehr schwerige , eventuell du konteste tiefer erklaren , welche function für was verantwirtlich?
@vorontsovru270895
@vorontsovru270895 3 жыл бұрын
Коротко для .Net разрабов: map -> linq Select flatMap -> linq SelectMany fold -> по сути linq First filter -> linq Where
@eugenakv
@eugenakv 3 жыл бұрын
fold -> linq Aggregate
@МихаилДядищев-ж1д
@МихаилДядищев-ж1д 4 жыл бұрын
Грацули с соточкой:)
@SeemsNerdy
@SeemsNerdy 4 жыл бұрын
Спс!
@Chekist2008
@Chekist2008 3 жыл бұрын
На 25 строчке в первом варианте: Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 41 out of bounds for length 41
@agp1444
@agp1444 3 жыл бұрын
а кто такие ЯРДЫ? он когда здоровается на 0:16 говорит - "здорова, ярды"
@SeemsNerdy
@SeemsNerdy 3 жыл бұрын
Нерды :( ru.wikipedia.org/wiki/%D0%9D%D0%B5%D1%80%D0%B4
@m.shastin27
@m.shastin27 2 жыл бұрын
Я вообще подумал Ярдрей, как раз после его ролика смотрю)
@СашаТрисектор
@СашаТрисектор 2 жыл бұрын
так, конечно, лучше, но, что эти недоделанные, которые про красивый код, что скажут?
Android Parcelable или Serializable? Павел Борзиков @AvitoTech
24:01
Android Broadcast. Все об Андроид разработке
Рет қаралды 17 М.
СИНИЙ ИНЕЙ УЖЕ ВЫШЕЛ!❄️
01:01
DO$HIK
Рет қаралды 3,3 МЛН
Что-что Мурсдей говорит? 💭 #симбочка #симба #мурсдей
00:19
To Brawl AND BEYOND!
00:51
Brawl Stars
Рет қаралды 17 МЛН
#7. Kotlin в картинках. Лямбда выражения. Функции высшего порядка. Лямбды просто.
16:30
Мобильный разработчик | Юрий Петров | Flutter
Рет қаралды 13 М.
Let, Also, Apply, Run, With - Kotlin Scope Functions
11:44
Philipp Lackner
Рет қаралды 100 М.
Уроки по Kotlin. Коллекции в Kotlin на практике.
24:43
Тимофей Коваленко
Рет қаралды 9 М.
Как стать ЛУЧШИМ тестировщиком: от учителя до QA-инженера в Т-Банк
1:14:20
Руслан Масленников | Подкаст "экcпириенс"
Рет қаралды 18 М.
Java. Для чего нужен Optional?
18:26
Sergey Arkhipov Java Tutorials
Рет қаралды 14 М.
C++ Разработчик учит Python
28:01
Winderton
Рет қаралды 513 М.
СИНИЙ ИНЕЙ УЖЕ ВЫШЕЛ!❄️
01:01
DO$HIK
Рет қаралды 3,3 МЛН