
? 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

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

Anton
12.09.2017
13:44:13

Igor
12.09.2017
15:34:51

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

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

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

Sadrutdin
12.09.2017
20:21:03

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

? 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

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
}
}
}
почему-то цвет не изменяется на красный

Maxim
13.09.2017
10:00:00

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
... да ладно