
Михаил
30.08.2017
10:29:41
А почему сразу не вынести это дело в дефолтные аргументы?

Алексей
30.08.2017
10:30:17
а милисекунды точно не изменятся?)
если я каждому присвою System.currentTimeMillis

Михаил
30.08.2017
10:32:22
В дефолтных аргументах можно юзать другие аргументы

Google

Quantum Harmonizer
30.08.2017
10:32:23

Алексей
30.08.2017
10:33:31
так у пользователя могут меняться данные
как их не изменять?)

Igor
30.08.2017
10:33:52

Алексей
30.08.2017
10:34:01
а не накладно?
копировать объекты вместо изменения одного значения

Quantum Harmonizer
30.08.2017
10:36:27
а не накладно?
Не особо, если не нужно скопировать несколько миллионов пользователей в цикле.

Vladimir
30.08.2017
10:36:50

Quantum Harmonizer
30.08.2017
10:36:52
Вообще, можно создать дополнительный конструктор, который просавит все time в currentTimeMillis().

Алексей
30.08.2017
10:38:03
А это точно data class?
согласен, учитывая что дата классы должны служить только для хранения данных - возможно я и не прав что его таким сделал

Quantum Harmonizer
30.08.2017
10:39:57
data class — это обычный класс, который поддерживает hashCode, equals, toString, copy и destructuring.
Использовать его можно как угодно.

Алексей
30.08.2017
10:41:24
ну кстати, про copy наверное верный шаг
https://kotlinlang.org/docs/reference/data-classes.html

Google

Алексей
30.08.2017
10:41:32
надо было сразу сюда залезть)
всем спасибо)

? animufag ?
30.08.2017
12:19:44

Va
30.08.2017
12:21:43

Deni
30.08.2017
12:54:41
inline fun <T> (() -> T).callIf(predicate: () -> Boolean): T? {
return if (predicate()) this() else null
}
Подскажите, есть подобный метод готовый
Или как можно выполнить это же в одну строчку без своего экстеншена и без if else

? animufag ?
30.08.2017
13:02:25
чем это удобнее
if (predicate()) {
f()
}

Ivan
30.08.2017
13:02:49
Нужно меньше кода

? animufag ?
30.08.2017
13:02:57
это ведь по сути не комбинатор тыт тут же вызываешь функцию

Igor
30.08.2017
13:03:54

? animufag ?
30.08.2017
13:04:06
понимаю вот сделать чтобы функция вызывалась если аргументы не нулы – вот это реально жиза и там неплохо бы сэкономить на строках

Dmitry
30.08.2017
13:15:47

Deni
30.08.2017
13:16:59
Причем nullable

? animufag ?
30.08.2017
13:17:37
ну так в скопе ифа работать? или ты про то что лень else { null }
?

Deni
30.08.2017
13:18:09
Да

Mi
30.08.2017
13:23:24
зачем там вообще нул возвращать
если можно ничего не возвращать
если функция ничего не возвращает

Google

Mi
30.08.2017
13:23:43
это же не джава
хотя нет, в данном случае нельзя
а жаль

Deni
30.08.2017
13:50:00
)

Алексей
30.08.2017
13:55:57
https://stackoverflow.com/questions/35914095/package-protected-alternative-in-kotlin
Блин, это правда что из-за 5 классов надо отдельный модуль создавать?)

Sergey
30.08.2017
14:06:19
боюсь спросить зачем вам понадобился package private

Boris
30.08.2017
14:08:37

Алексей
30.08.2017
14:09:09
ну есть у меня допустим пакет с базой данных, там:
- sqliteopenhelper
- класс с моделью бд
- интерфейс с методами взаимодействия с бд
- класс, наследник от интерфейса
- 2 класса провайдера с тупо методам аля «получить что надо из бд»
вот я хочу чтобы классы, что находятся вне пекейджа видели только классы - провайдеры, а о существовании остального не знали

Va
30.08.2017
14:10:28
х%&ярь все в один файл ))))
а по теме, если у тебя прям настолько независимо все, то это действительно должен быть отдельный модуль
желательно еще и в либу вынесеный ?

Maxim
30.08.2017
14:11:02
в ответе же поясняется, что package private на самом деле никакой не private, потому что любой может создать такой же пакет, и внутри него обращаться к тем классам, которые по идее должны были быть скрыты

? animufag ?
30.08.2017
14:11:42

Алексей
30.08.2017
14:11:46
верно, но это скорее моральное успокоение) т.к после прогварда мало кому захочется создавать пакет a.b.c.d и вызывать там методы a,b,c ?
тут скорее чтобы коллеги не могли начать вдруг писать например методы прямых sql запросов

Maxim
30.08.2017
14:14:14

Алексей
30.08.2017
14:14:21
=)
спасибо

Boris
30.08.2017
14:15:32
Ещё можно в один файл положить и сделать приватными

Алексей
30.08.2017
14:15:55
ну это же не вариант)

Igor
30.08.2017
14:19:16
Еще можно использовать модулярную-визибилите (доступно с Android Z ?)

Google

Глеб
30.08.2017
20:04:25
Всем доброго времени суток
Господа, а есть чатик по котлину?
Я, кажется, баг нашел
http://i.imgur.com/ihYblP2.png
val fullName ловит в this класс, из которого происходит доступ к полю
в итоге получается забавная шляпа
http://i.imgur.com/tlJhWEH.png
Вопрос: баг или я что-то сделал не так?

Ivan
30.08.2017
20:08:15
Ну хотя так и с джавой не сложно сделать

Глеб
30.08.2017
20:09:09
И всё-таки, не смотря на то, что причины такого поведения мне, в целом, понятны, хотелось-бы узнать, так оно и должно быть, или это ошибка в компиляторе?
Пока что больше похоже на второе

Ivan
30.08.2017
20:12:15
Захватил ссылку просто
Сделай по человески, нормально
И проблемы не будет

Dibro
30.08.2017
20:13:36

Глеб
30.08.2017
20:13:52
тут, вроде, буквально одна строчка кода, и я слабо представляю как будет "по-человечески" в данном случае

Ivan
30.08.2017
20:14:24
Никакого бага нет, ссылка остаётся и все. Я так ловил раз эксеншн когда якобы пытался активити в реалм сохранить
Ну вот перепиши без летов этих, и проверь

Google

Ivan
30.08.2017
20:15:21
Вангую все будет ок

Глеб
30.08.2017
20:15:32
Всё ок даже если там fun вместо val
Но есть нюанс (c)

Dibro
30.08.2017
20:16:13

Ivan
30.08.2017
20:16:19
Ну лет это же new Object () {{
}} В джаве, да?
Если да, то в этом и проблема)

Глеб
30.08.2017
20:16:44
Если-бы...
тогда this указывал-бы на анонимный Object
или как там его
а так this указывает на объект, запросивший поле fullName
и по счастливому совпадению у этого объекта также было поле name
иначе я и вовсе поймал-бы краш

Dibro
30.08.2017
20:18:09
посмотри байткод
может там что полезное

Ivan
30.08.2017
20:18:44
1) It declares an anonymous class which extends the class you use in the constructor and 2) creates an instance of this anonymous class.

Глеб
30.08.2017
20:18:59
оффтоп: @Dibro, демон, ты как буквы перевернул!?