@kotlin_lang

Страница 72 из 982
Aliaksei
15.03.2017
06:00:48
Для чата - посоветую товарищу взять спринг 5, с реактивщиной, и асинхронный драйвер Кассандры накрутить. Ну или монги для начала.

Глеб
15.03.2017
06:19:31
Привет! Подскажите, пожалуйста, как в котлине лучше вего сделать так, чтобы внутри функции можно было менять параметр? Типа этого:



Руслан
15.03.2017
06:22:01
private fun doIt(_ch: Int) { var ch = _ch doSomething() ch— }

Google
Глеб
15.03.2017
06:22:58
А он снаружи так поменяется?

Boris
15.03.2017
06:23:11
Глеб
15.03.2017
06:23:31
То есть если var ch = 15; doIt(ch); он поменяется, да?

:-)

Boris
15.03.2017
06:23:57
причем смешно дважды, по-первых это будет int, во-вторых даже если бы Integer, то он всё равно имутабельный

Boris
15.03.2017
06:25:02
просто в котлине нельзя менять парамтры во избежание лишних проблем и вопрсов

в том смысле, что ссылки менять нельзя

Andrew
15.03.2017
06:26:42
А AtomicReference<E> будет работать?

Boris
15.03.2017
06:27:18
атомик или любая друга обертка, если очень нужно поменять

Andrew
15.03.2017
06:28:48
:-)
вот тебе и ответ, оборачивай переменную в AtomicReference, а лучше смени дизайн кода

Boris
15.03.2017
06:32:23
да, нынче не модно менять параметры, из функционального программирования пришла мода на чистые функции

особенно если речь об Int-е

Google
Andrey
15.03.2017
08:02:59
Всем привет! Ищем Java-программиста в международную компанию, занимающуюся спортивными ставками и разработкой соответствующего ПО. По факту большая часть Java-разработки сейчас переводится на Kotlin. З/п - до 200 000 руб. Если вакансия заинтересовала - пишите в личку или оставляйте отклик по ссылке: https://hh.ru/vacancy/19918084 Сорри, если оффтоп, буду признателен, если подскажете куда лучше запостить вакансию :)

Aliaksei
15.03.2017
08:06:23
огонёк)

guga
15.03.2017
08:08:03
нужно в про jvm закинуть

и развести очередной холивар, что жаба ненужна

guga
15.03.2017
08:11:49
И как обычно удаленки нема))
так ты же не пишешь на котлине. О_О

или за 3.5к готов начать?

или какой там сейчас курс?

Aliaksei
15.03.2017
08:12:47
до 3.4 это где то

Luger
15.03.2017
08:12:49
или за 3.5к готов начать?
Чеб нет, на джаве же пишу

Aliaksei
15.03.2017
08:13:53
Это кстати норм в Москве что ли, и наверное ещё ж налоги заплатить?

Boris
15.03.2017
08:16:18
о, от меня недалеко

и на котлине пишу

Egor
15.03.2017
11:04:00
а сколько налог в России?

Sergey
15.03.2017
11:07:54
на котлин?

Ilya
15.03.2017
11:08:40
13 % НДФЛ.

Стас
15.03.2017
11:14:11
Минфин чё-то там мямлит про повышение до 22%

Igor
15.03.2017
11:21:24
Минфин чё-то там мямлит про повышение до 22%
Про уменьшение полного налога, который платят компании за работника (с учетом пенсии) с ~30% до 22% и повышение НДС до 21%

Стас
15.03.2017
11:22:27
Стой. Не могу никак до конца прочитать.

Google
Стас
15.03.2017
11:24:39
Эх, как они хитро приправляют. Надо понимать, что НДС заложен во всё: повышение НДС на 8% означает повышение цен конечного продукта минимум на 16%. А то, что с компаний ношу частично снимут - так это не про наш профит.

Egor
15.03.2017
11:36:15
а если работать ЧП??

Ilya
15.03.2017
11:45:27
ИП - есть разные режимы, для ИТ лучше всего 6 % с выручки + примерно 25 тыс. в год в ПФР.

Egor
15.03.2017
13:09:22
у меня сейчас в Киеве 4 или 5 % налог, но компания 2% покрывает с зп

Roman
15.03.2017
13:09:30
народ, какие best practice для проверки на null var свойств? в джаве компилятор спокойно воспринимал код типа if (someValue != null) { someValue.someFun(); } else { throw new SomeError(); } В котлине же ругается что смарт каст невозможен из-за потенциального изменения свойства в другом потоке

писать ?. или !! как-то с душком в этой ситуации

Sergey
15.03.2017
13:14:05
Roman
15.03.2017
13:14:10
объявлять каждый раз локальную переменную val someValue = this.someValue тоже не красиво

Egor
15.03.2017
13:15:06
компания работает с котлином?
а в чем проблема? я решаю что добавлять в андроид разработку

Sergey
15.03.2017
13:16:08
а в чем проблема? я решаю что добавлять в андроид разработку
судя по отзывам некоторых людей, не везде такое разрешают)

Egor
15.03.2017
13:16:39
знаю, у нас проще с этим, заказчики любят все новые тенденции и СДК прикрутить

Roman
15.03.2017
13:17:03
someValue?.someFun() ?: throw SomeError()
если блок большой, то в одну строку не запишешь и ?: потом внизу будет некрасиво и непонятно выглядеть как-то.. нет других вариантов?

someValue?.someFun() ?: throw SomeError() в ?. ничего плохого нет
подразумевается что блок мб не из одного вызова

Sergey
15.03.2017
13:17:38
тогда через let

Egor
15.03.2017
13:17:48
^ это плохо

не на том уровне ошибку надо пробрасовать

Google
Sergey
15.03.2017
13:18:21
someValue?.let { it.someFun() it.someFun2() } ?: fail()

Roman
15.03.2017
13:20:39
а в чем разница между let и run в данном контексте?

Dzmitry
15.03.2017
13:23:37
run не замыкает значение

someValue?.let { it } тут it определенно не nullable тип

someValue?.run { } тут, т.к в run ничего не передается, то someValue придет из внешнего скопа в лямбду и придется её еще раз на null проверить

Sergey
15.03.2017
13:26:42
а в чем разница между let и run в данном контексте?
let возвращает последнее выражение, а run нет

Admin
ERROR: S client not available

Dzmitry
15.03.2017
13:26:48
@kotlin.internal.InlineOnly public inline fun <T, R> T.run(block: T.() -> R): R = block() @kotlin.internal.InlineOnly public inline fun <T, R> T.let(block: (T) -> R): R = block(this)

Sergey
15.03.2017
13:26:51
ну и run становится скоупом

Sergey
15.03.2017
13:27:19
with(value){} vs value.run {} вызовами)

Roman
15.03.2017
13:27:43
with(value){} vs value.run {} вызовами)
кроме формата вызова ничем? зачем тогда два разных формата?

Sergey
15.03.2017
13:28:15
вроде

Руслан
15.03.2017
13:29:35
run - передаешь лямбду, получаешь ркзультат

Sergey
15.03.2017
13:29:45
кроме формата вызова ничем? зачем тогда два разных формата?
run как экстешен, а with это просто функция. но зачем with это сложно ответить

Руслан
15.03.2017
13:30:15
with - передаешь ресивер и лямбду, внутри лямбды this это ресивер

Sergey
15.03.2017
13:30:24
есть еще apply и also :)

Руслан
15.03.2017
13:30:36
Возвращаешь результат лябды

Roman
15.03.2017
13:30:38
а есть ли вариант для if (a != null && b!= null) ? только вложенный let?

Google
Dzmitry
15.03.2017
13:32:04
Sergey Zolotov, [15.03.17 16:30] есть еще apply и also :) Про also не слышал

И что-то не вижу в списке экстеншен функций

Руслан
15.03.2017
13:32:22
apply - вызываешь лямбду на any, внутри this это any, возвращается this

Dzmitry
15.03.2017
13:32:30
А, и что оно делает?

Sergey
15.03.2017
13:32:53
also это как apply, возвращает того кто вызывал, но вместо скоупа тот кто вызывал идет в аргументы

Roman
15.03.2017
13:34:01
also is like apply: it takes the receiver, does some action on it, and returns that receiver. The difference is that in the block inside apply the receiver is available as this, while in the block inside also it's available as it (and you can give it another name if you want). This comes handy when you do not want to shadow this from the outer scope

Sergey
15.03.2017
13:34:51
примерчики .addInterceptor(HttpLoggingInterceptor().apply { level = HttpLoggingInterceptor.Level.BODY }) и .addInterceptor(HttpLoggingInterceptor().also { log -> log.level = HttpLoggingInterceptor.Level.BODY })

Roman
15.03.2017
13:35:33
какие-то не очень очевидные названия у этих операторов

все похожи и из названия не понятно какой что делает

ну кроме apply разве что

Sergey
15.03.2017
13:36:14
ну на самом деле если их все юзаешь, то все понятно и очевидно

надо сделать cheatsheet по ним)

у скалистов кстати нет такого ничего

Igor
15.03.2017
13:37:20
А, и что оно делает?
fun <T> T.also(block: (T) -> Unit): T { block(this); return this } fun <T> T.takeIf(predicate: (T) -> Boolean): T? = if (predicate(this)) this else null fun <T> T.takeUnless(predicate: (T) -> Boolean): T? = if (!predicate(this)) this else null

Dzmitry
15.03.2017
13:38:06
Как кстати в телеграмме кодяру правильно вставлять, кто объяснит?

Sergey
15.03.2017
13:38:15
как в маркдауне

тройной `

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