@kotlin_lang

Страница 168 из 982
Глеб
01.06.2017
10:55:03
прибавляю к двум часам случайное количество (от 0 до 60) минут

Nikita
01.06.2017
10:55:51
хм

Alexander
01.06.2017
10:57:12
Либо long примитив где это возможно
Long примитив всегда, когда not null

Vlad
01.06.2017
10:58:01
Да я в курсе)

Google
Nikita
01.06.2017
11:00:16
прибавляю к двум часам случайное количество (от 0 до 60) минут
я написал сво фигню на java. long result = TimeUnit.HOURS.toMillis(2) + ThreadLocalRandom.current().nextLong(TimeUnit.HOURS.toMillis(1)); , но что то мне кажется что твое решение на котлине как ни крути короче. Правда читаемей ли? (да, я на котлине не пишу и это кажется мне немного странным)

хотя да, читаемей

Umren
01.06.2017
11:01:21
Gregory
01.06.2017
11:02:56
я написал сво фигню на java. long result = TimeUnit.HOURS.toMillis(2) + ThreadLocalRandom.current().nextLong(TimeUnit.HOURS.toMillis(1)); , но что то мне кажется что твое решение на котлине как ни крути короче. Правда читаемей ли? (да, я на котлине не пишу и это кажется мне немного странным)
Этот код с использование TimeUnit логичнее, т.к. понятно, что такое 2. Код выше с экстеншеном - лажа, т.к. правильно заметили, что в переменной или литерале может быть всё что угодно.

10% времени мы пишем код, а 90% времени его сопровождаем.

Gregory
01.06.2017
11:04:00
Если потратить 0,1% от общего времени на читаемость (== понимаемость), то потом это сэкономит десятки процентов на поддержке.

Читаемость != количество строк или кода меньше.

Глеб
01.06.2017
11:09:28
Gregory я не совсем понял, почему лажа. Ну и что, что в Long может быть все, что угодно? Мы же не собираемся переводить в милисекунды количество рыбок в аквариуме.

Igor
01.06.2017
11:10:52
Глеб
01.06.2017
11:11:15
@K_Gregory то есть если я переименую hours в hoursToMills, это не будет лажой?

Alexander
01.06.2017
11:11:34
Это звучит примерно как "а давайте String у нас будет уметь делать HTTP запросы по URL"

Михаил
01.06.2017
11:11:57
Gregory я не совсем понял, почему лажа. Ну и что, что в Long может быть все, что угодно? Мы же не собираемся переводить в милисекунды количество рыбок в аквариуме.
В твоем коде с первого взгляда непонятно, что такое hours, а что такое minutes, что они принимают и что отдают val ourDelta = 2L.hours + Util.rnd(0, 60).toLong().minutes

Google
Михаил
01.06.2017
11:12:17
Alexander
01.06.2017
11:13:40
и еще добавить методы для перевода миль в километры и фунтов в килограммы

и получится большая помойка

Nikita
01.06.2017
11:14:34
я так и не понял, зачем делать эти дополнительные утилитарные классы если есть уже готовые?

Глеб
01.06.2017
11:17:56
@deychai хм, звучит разумно. Тогда получается, что лучше написать несколько классов и переопределить у них plus, чем пользоваться extension-методами таким обазом.

Nikita
01.06.2017
11:19:10
Да

Igor
01.06.2017
11:19:13
есть такое )
Где это?

Sergey
01.06.2017
11:19:24
Где это?
https://github.com/kittinunf/Fuel

Igor
01.06.2017
11:19:58
https://github.com/kittinunf/Fuel
ОК (не знаю что это и знать не хочу), а то ты меня испугал что это в stdlib завезли

Глеб
01.06.2017
11:21:28
Nikita да я просто хочу, чтобы время складывалось красиво и все хорошо читалось. Котлин позволяет это делать, а мне хочется этим воспользоваться

Gregory
01.06.2017
11:21:55
Extension-методы предполагают, что их можно использовать с любым экземпляром класса. В моей картине мира extension-методы - это компромисс между SRP, OCP и удобством написания кода.

Nikita
01.06.2017
11:23:44
Nikita да я просто хочу, чтобы время складывалось красиво и все хорошо читалось. Котлин позволяет это делать, а мне хочется этим воспользоваться
я понима. Котлин достаточно многофункциональный и интересный язык судя по всему. Просто я не пойму зачем городить велосипеды) я уверен что это можно завернуть гораздо красивее и понятнее в котлинстайле что бы коллеги могли легко понять как это работает и сами воспользоваться написанной тобой extension функцией.

ну эт имхо конечно

Gregory
01.06.2017
11:25:14
Михаил
01.06.2017
11:49:25
@deychai хм, звучит разумно. Тогда получается, что лучше написать несколько классов и переопределить у них plus, чем пользоваться extension-методами таким обазом.
"Написать несколько классов и переопределить у них plus" - вот это, на мой взгляд, самое красивое и понятное решение на данный момент

Михаил
01.06.2017
13:58:37
А мне показалось или в котлине раньше можно было интерфейсы с дефолтными реализациями?

Именно на базе джавы 7

Руслан
01.06.2017
14:00:43
Можно и на базе джавы 6

Google
Aleksandr
01.06.2017
14:01:17
Можно и на базе джавы 6
в Java 6 еще не было default методов в интерфейсах

Михаил
01.06.2017
14:01:37
Мне андроид студия говорит чтоб я пиписю целовал...

Руслан
01.06.2017
14:01:50
в Java 6 еще не было default методов в интерфейсах
Это не мешает сделать дефолтные методы

Михаил
01.06.2017
14:01:55
в Java 6 еще не было default методов в интерфейсах
В котлине они реализованы иначе

Руслан
01.06.2017
14:02:48
Это не мешает сделать дефолтные методы
Просто они будут реализованы так, что под реализацией для Java 6-7 будут абстрактные классы, и не получится использовать их для эволюции интерфейса.

https://youtu.be/yYG12qaxWO4?t=17m36s вот тут в видео более точно описано

@Mihail_t так что у тебя за ошибка

Кстати в слаке JB ввели Code of Conduct https://github.com/JetBrains/kotlin-web-site/blob/master/pages/community/slackccugl.md

Думаю нам стоит перевести и тоже использовать

Aliaksei
01.06.2017
14:11:35
и сразу станет СКУШНА

Umren
01.06.2017
14:27:36
CoC обычно используется в офф сообществах или рассылке

Руслан
01.06.2017
14:29:09
Так же как и слаку - чат растет, чтобы потом никто не обижался и понимал как себя вести нужно.

Umren
01.06.2017
14:31:30
Правила это хорошо когда они адекватные надо почитать будет

Igor
01.06.2017
14:31:40
Думаю нам стоит перевести и тоже использовать
Лучше бы перевел и доделал get started ? больше пользы было бы

Руслан
01.06.2017
14:32:12
так есть же kotlinlang.ru

Или это не то?

Igor
01.06.2017
14:32:45
Там еще много “Актуальные задачи”, можешь к пример FAQ перевести

Руслан
01.06.2017
14:33:01
Я скорее доделаю kotlin.link

там куча чего нужно пофиксить и сделать

Google
Umren
01.06.2017
14:50:13
Плохо что нету нумерации в правилах

Admin
ERROR: S client not available

Михаил
01.06.2017
19:53:28
вот такое

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

Nikita
01.06.2017
20:05:30
Мда

Ето баг

А не

Этож интерфейс

А не баг

Lost
01.06.2017
20:07:15
а давно в интерфейсах дефолтные методы?

нах так жить посоны

Михаил
01.06.2017
20:07:35
В котлине еще с первой версии

Про версии до первой не могу сказать

Lost
01.06.2017
20:08:27
и в чем прикол

только без того что это "УДОБНО"

Михаил
01.06.2017
20:09:43
Мне надо обобщить объекты но не у каждого надо недефолтное поведение

Ну вообще мне сильно не жмет. Мне больше интересует почему это в принципе не работает, хотя должно

Андрей
01.06.2017
20:12:58
Если компилится, то пусть ругается. Всеравно ты в интерфейс часто лазить не будешь. А ругается, скорее всего, линт. И у него есть свои аннотации, которые позволяют засупресить проверку.

@SuppressLint("NewApi")

Konstantin
01.06.2017
20:17:51
только без того что это "УДОБНО"
Можно использовать как примесь, например

Google
Igor
01.06.2017
20:51:44
Написал небольшой скрипт на Kotlin, который считает статистику чата (по combot.org) Исходники (MIT) https://gist.github.com/anonymous/2153dc64b3c6b527853a7e2db2633f08 Результат (данные за последний месяц, “юзер” это те кто делает в среднем хотя бы 1 сообщение в день): 57% юзеров пишут не более 1 сообщений в день 77% юзеров пишут не более 2 сообщений в день 80% юзеров пишут не более 5 сообщений в день 83% юзеров пишут не более 7 сообщений в день 87% юзеров пишут не более 8 сообщений в день 90% юзеров пишут не более 9 сообщений в день 93% юзеров пишут не более 11 сообщений в день 97% юзеров пишут не более 12 сообщений в день 100% юзеров пишут не более 17 сообщений в день Список почетных флудеров (пишут больше чем 90% других юзеров): Флудер #1: "Umren" (17 сообщений в день) Флудер #2: "Ruslan Ibragimov" (12 сообщений в день) Флудер #3: "Михаил" (11 сообщений в день) P.S. Кстати, я так же написал бота, который пересылает сообщений из kotlinlang.slack.com прям в telegram @SlackToTelegramBot

Umren
01.06.2017
20:52:39
?

Kirill
01.06.2017
20:53:09
Написал небольшой скрипт на Kotlin, который считает статистику чата (по combot.org) Исходники (MIT) https://gist.github.com/anonymous/2153dc64b3c6b527853a7e2db2633f08 Результат (данные за последний месяц, “юзер” это те кто делает в среднем хотя бы 1 сообщение в день): 57% юзеров пишут не более 1 сообщений в день 77% юзеров пишут не более 2 сообщений в день 80% юзеров пишут не более 5 сообщений в день 83% юзеров пишут не более 7 сообщений в день 87% юзеров пишут не более 8 сообщений в день 90% юзеров пишут не более 9 сообщений в день 93% юзеров пишут не более 11 сообщений в день 97% юзеров пишут не более 12 сообщений в день 100% юзеров пишут не более 17 сообщений в день Список почетных флудеров (пишут больше чем 90% других юзеров): Флудер #1: "Umren" (17 сообщений в день) Флудер #2: "Ruslan Ibragimov" (12 сообщений в день) Флудер #3: "Михаил" (11 сообщений в день) P.S. Кстати, я так же написал бота, который пересылает сообщений из kotlinlang.slack.com прям в telegram @SlackToTelegramBot
Почётный список флудеров?

Konstantine
01.06.2017
23:24:45
Ребят, можно ли при создании объекта как-нибудь у него переопределить какие-то функции?

Что-то вроде val a = A() { override fun lala() {} }

Alexey
01.06.2017
23:26:47
можно в конструктор объекта передавать лямбду, которую потом вызывать в каком-либо методе, получится примерно то, что надо

Konstantine
01.06.2017
23:28:06
Тут речь об классе из android api. В нем не смогу вызвать так что-то

Ступил вообще

По итогу просто сделал так val a = object : A() {}

Alexey
01.06.2017
23:29:16
минималистичненько

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