@kotlin_lang

Страница 318 из 982
? animufag ?
12.09.2017
12:53:29
не, я его просто от тебя наверное услышал. так то на анко пишу так то по их семплу уже чувствуется предстоящая боль

аннотации, статики. они не очень ладят с котлином

ну и само собой постоянно будет хотется переписать на котлиновый dsl и будет сложно

Igor
12.09.2017
12:55:52
Kotlin + Litho это правда боль, но можно привыкнуть. Сейчас в процессе написания примера на Litho + Elm (архитектура)

Google
? animufag ?
12.09.2017
12:56:51
как эффекты выражаешь?

Igor
12.09.2017
13:02:48
Командами. Взял за пример не совсем Elm, а библиотеку Elmish - просто я с ней лучше знаком.

? animufag ?
12.09.2017
13:19:54
просто думаю что туда можно было бы приплести корутины, возвращать список суспендабл функций, запускать по очереди в комонпуле, получать экшон слать его в ui ну там проблемы с утечками. ещё подписки неодзначно выражать

Anton
12.09.2017
13:39:41
аннотации, статики. они не очень ладят с котлином
Аннотация не ладят с котлином? Т.е. за котлин можно не беспокоится, что набегут любители спрингов и превратят все в абстрактное месиво, как в жабе? (Где работа без спринга уже редкость)

? animufag ?
12.09.2017
13:41:36
Аннотация не ладят с котлином? Т.е. за котлин можно не беспокоится, что набегут любители спрингов и превратят все в абстрактное месиво, как в жабе? (Где работа без спринга уже редкость)
было несколько статей. я вот только что гуглил как Transient к делегату применить (применил в итоге, но иде-шная инспекция всё ещё показывает варнинг)

Andrey
12.09.2017
13:41:54
в следующем релизе spring-boot будет поддержка котлина из коробки

Igor
12.09.2017
15:34:51
просто думаю что туда можно было бы приплести корутины, возвращать список суспендабл функций, запускать по очереди в комонпуле, получать экшон слать его в ui ну там проблемы с утечками. ещё подписки неодзначно выражать
Я пока думаю остановится на Deffered (оборачивать в команды). Как они будут исполнятся, это детали реализация - пока плотно не думал. Для начала сделаю поддержку простейших init, update, view методов и Msg на sealed классах.

You
12.09.2017
17:54:53
как лучше сделать? fun show(view: View) { view.visibility = View.VISIBLE } или fun View.show() { this.visibility = View.VISIBLE } ?

мне кажется первый вариант лучше

? animufag ?
12.09.2017
17:56:35
да чисто вкусовщина не уверен что функция show вообще нужна

Mi
12.09.2017
17:57:06
Второе будет логичнее

Более ооп

Google
Mi
12.09.2017
17:57:20
А не процедурный

? animufag ?
12.09.2017
17:59:17
да не. реально что больше глазу нравится

оба варианта можно передать как ::show

алсо у меня вот так var View.isGone: Boolean set(value) { visibility = if (value) { View.GONE } else { View.VISIBLE } } get() = visibility == View.GONE var View.isInvisible: Boolean set(value) { visibility = if (value) { View.INVISIBLE } else { View.VISIBLE } } get() = visibility == View.INVISIBLE

You
12.09.2017
18:00:31
да чисто вкусовщина не уверен что функция show вообще нужна
ну да, разницы нет public static final void showe(@NotNull View $receiver) { Intrinsics.checkParameterIsNotNull($receiver, "$receiver"); $receiver.setVisibility(0); } public static final void show(@NotNull View view) { Intrinsics.checkParameterIsNotNull(view, "view"); view.setVisibility(0); }

Mi
12.09.2017
18:01:01
Суть то не в реализации

А в работе с этим потом

You
12.09.2017
18:01:40
ну типа мне и так и так удобно

просто интересно что лучше работает

Dmitry
12.09.2017
18:02:10
ну да, разницы нет public static final void showe(@NotNull View $receiver) { Intrinsics.checkParameterIsNotNull($receiver, "$receiver"); $receiver.setVisibility(0); } public static final void show(@NotNull View view) { Intrinsics.checkParameterIsNotNull(view, "view"); view.setVisibility(0); }
а причем тут декомпиленный код на джава, работает одинаково. но как говорит @meosit работать то с этими функциями в котлине

You
12.09.2017
18:02:24
прочитал 3 статьи про ухудшения перфоманса в определенных случаях и стало интересно

Mi
12.09.2017
18:03:12
Это точно не то место, где надо искать bottleneck

You
12.09.2017
18:03:35
если что могу скинуть статьи

? animufag ?
12.09.2017
18:03:52
лол ахах)

я тут ищу вызовы бд в мейн треде

как будто мне есть дело до экстеншен функций

кстати я уже задавал вопрос в андроидном чатике, но он отвратительный. мб тут кто знает: StrictMode как-то не особо указывает на вызовы sql

то есть вообще про них молчит. мб я что-то недопонимаю. может на старте каждой активити его нужно заново заводить

You
12.09.2017
18:33:34
а можно ли сделать extension-функцию, чтобы к ней можно было применить property access синтаксис?

Mi
12.09.2017
18:35:35
Есть экстеншон проперти

Google
You
12.09.2017
18:36:07
отправляюсь в гугол!

Dmitry
12.09.2017
18:40:24
отправляюсь в гугол!
лучше на https://kotlinlang.org/docs/reference/

Mi
12.09.2017
18:42:37
Разницы

You
12.09.2017
18:45:10
Есть экстеншон проперти
благодарю, все получилось

Dmitry
12.09.2017
18:45:30
ну прочитав хотя бы разделы уже было бы представление что есть/нету, а не методом тыка в гугл узнавать возможности языка

You
12.09.2017
18:46:14
ладно, учту

Kirill
12.09.2017
18:58:07
а у нас есть чат в котором подскажут как правильно писать кастомные градл таски ?:)

Sadrutdin
12.09.2017
19:38:52
как избавиться от кучи операторов if ?

разгрузить код

You
12.09.2017
19:39:32
а какого рода у тебя условия?

Sadrutdin
12.09.2017
19:41:30


это Telegram API

Dibro
12.09.2017
19:41:58
это же джава

Sadrutdin
12.09.2017
19:42:01
такого рода код ещё три раза больше

перепиши его на Котлин, такая же проблема

это же джава

You
12.09.2017
19:43:17
был бы это котлин, ты бы мог сделать high-order функцию для try с логированием

Dibro
12.09.2017
19:43:18
можно при фолсе возвращаться из метода, как вариант

Igor
12.09.2017
19:43:41
перепиши его на Котлин, такая же проблема
Ну разбей на более мелкие методы

Google
Sadrutdin
12.09.2017
19:44:05
разобью, но условия остануться

Maxim
12.09.2017
20:19:37
как избавиться от кучи операторов if ?
Это конечно не совсем то, но не могу удержаться, что бы не потролить: https://m.habrahabr.ru/post/124878/

Maxim
12.09.2017
20:23:18
А вы видели теги к посту?))
Ну, я же говорю, это тролинг))

? animufag ?
12.09.2017
21:09:30
ну кстати в смолтолке условный оператор на наследовании сделан а хотя статья не про то

Igor
12.09.2017
21:29:25
разобью, но условия остануться
Предлагаю FP way Разделяешь код на функции: 1) "Pure" бизнес логику, только с if/when, которые возвращают sealed class (как Алгебраический Тип Данных) 2) Рабочий метод с сайд эффектами, но без логики https://gist.github.com/y2k/3207eb3a22cd841492b709fd5094dfe9

Va
12.09.2017
21:41:23
сорри, но это не совсем фп

и, кстати, есть takeIf и takeUnless

Igor
12.09.2017
21:44:49
сорри, но это не совсем фп
ОК, Готов услышать свои ошибки

Va
12.09.2017
21:51:57
как минимум то, что у Вас функция - clojure уже намекает на то, что это не фп

потому что это должно быть макросом, которых в котлтне нет ))

Igor
12.09.2017
21:58:38
как минимум то, что у Вас функция - clojure уже намекает на то, что это не фп
Не понял при чем тут clojure? И какая связь между макросами и ФП?

? animufag ?
12.09.2017
22:14:19
лол

на своей волне

Sadrutdin
13.09.2017
04:14:54
вообще проблема вот в чём

по сути это вебхук сообщений телеграм. нужно проверять в бд имеет ли доступ (то есть зарегистрирован ли юзер), а при заказе вводить последовательность сообщений. соответственно, условия такие: если /*это Map*/ orderlist.get(chatid).getStreet == null {/*Просьба ввести улицу*/} если orderlist.get(chatid).getHomeNumber == null && orderlist.get(chatid).getStreet != null {/*Просьба ввести № дома*/}

получается ужасный код

Sergey
13.09.2017
06:06:16
гы, reddit тоже котлин юзают

? animufag ?
13.09.2017
09:01:53
гы, reddit тоже котлин юзают
Кинь ссылку что-ли

Google
Sergey
13.09.2017
09:02:26
Кинь ссылку что-ли
Rodney Lyons [6:14 AM] Hello Kotlin fam. Reddit is hiring like crazy and we’re looking for some Senior Android Developers to help us build a better meme factory. Apply Here: http://grnh.se/7j3wtv1 Reddit | Senior Android Developer | San Francisco, CA | ONSITE | FULLTIME “The front page of the internet,” Reddit is comprised of thousands of user-run communities, each with its own personality, unique focus, and moderator team. Founded in 2005, Reddit is a place for community, conversation, and connection with over 250 million users worldwide and growing fast! Mobile makes up more than half of Reddit’s traffic, and as a member of the mobile team you’ll play a key role in the defining the future of our platform. Apply Here: http://grnh.se/7j3wtv1

Алексей
13.09.2017
09:50:39
всем привет. делаю приложение которое изменяет цвет круга при нажантии на экран (до нажатия черный, после нажатия красный)

class MainActivity : Activity(){ public override fun onCreate(savedInstanceState: Bundle?){ val dw: DrawView super.onCreate(savedInstanceState) dw = DrawView(this) setContentView(dw) } class DrawView(context: Context) : View(context) , OnTouchListener{ var paint: Paint var canvas: Canvas init { paint = Paint() canvas = Canvas() } override fun onDraw(canvas: Canvas) { canvas.drawARGB(255,255,255,255) paint.setColor(Color.BLACK) canvas.drawCircle((getWidth() / 2).toFloat(), ((getHeight() / 2)).toFloat(), 50f, paint) } override fun onTouch(v: View, event: MotionEvent): Boolean { if (event.action == MotionEvent.ACTION_DOWN) { paint.setColor(Color.RED) canvas.drawCircle((getWidth() / 2).toFloat(), ((getHeight() / 2)).toFloat(), 50f, paint) invalidate(); } return true } } }

почему-то цвет не изменяется на красный

Anton
13.09.2017
10:01:37
почитай как вьюхи рисовать

Nikita
13.09.2017
12:00:28
Коллеги, подскажите пожалуйста, есть следующая конструкция внутри метода : worker?.let { workerInteractor.registerMove(it?.id, true, data = { it.... //<<<? }) где 3 аргумент функции registerMove принимает в качестве параметра лямбда функцию (Unit) -> Unit. Каким образом обратиться к внутреннему параметру функции let таким образом что бы получить ссылку на объект вне лямбды (в нашем случае worker)?

? animufag ?
13.09.2017
12:03:07
можешь попробовать it@что-нибудь хотя наверное не сработает

короче просто проименуй аргумент лямбды

worker?.let { worker ->

Lev
13.09.2017
13:34:21
Спринг таки позволяет писать Autowired зависимости в конструктор. Нормально все работает.

Руслан
13.09.2017
13:34:47
И даже @Autowired писать не нужно

Lev
13.09.2017
13:34:59
... да ладно

Страница 318 из 982