
Dmitry
28.10.2016
10:21:33
или ts=4 если хочешь ширше

D
28.10.2016
10:22:12

Dmitry
28.10.2016
10:22:30
я за читабельность, в том числе через веб, да.
часто смотрю в гитхубе проект как он внутри там, а не выкачиваю себе

Google

D
28.10.2016
10:25:11
если автор проекта дебил и использует для индентации больше 4 пробелов - проект не стоит того, чтобы на него смотреть

Dmitry
28.10.2016
10:25:52
ну, я дебилом себя не считаю, но на десктопе у меня мониторы вертикально повернуты

folex
28.10.2016
10:25:57
нахуй линукс!

Dmitry
28.10.2016
10:25:59
и мне даже 4 пробела много. :Р
о!

folex
28.10.2016
10:26:02
сжигай его!

Nikolay
28.10.2016
10:26:04

Lev
28.10.2016
10:26:36
Что значит табы не нужны? С табами собирается быстрее ?

D
28.10.2016
10:26:49
>_<

?Ivan
28.10.2016
10:26:55

D
28.10.2016
10:26:59
на 0.0000000001% ?

Lev
28.10.2016
10:27:13
Но это детали

Google

Dmitry
28.10.2016
10:27:24
зависит от размера проекта
ну вот потому мне удобно на вертикальном мониторе иметь табсайз 2, а на ноутбуке 4.
аргументов в пользу пробелов то?
пока что видим:
1. настраивать ширину нельзя
2. конпелируется дольше

D
28.10.2016
10:29:05
1. это плюс
2. азаза

Dmitry
28.10.2016
10:29:09
(troll)

Viacheslav
28.10.2016
10:29:11
!

D
28.10.2016
10:29:29

Lev
28.10.2016
10:29:56
Уже достаточно для разоблачения заговора пробельщиков

Dmitry
28.10.2016
10:31:02
ату его! лиспер!

D
28.10.2016
10:32:04
тебе с нами не по дороге, грязный скобколюб!

Nikolay
28.10.2016
10:33:16
я не помню чтобы в scala коде настраивал когда-то табы/пробелы в идее)

D
28.10.2016
10:33:58
именно
ide/редактор сам знает как лучше
ибо универсальность

Lev
28.10.2016
10:34:58
А что только люди не пойдут ради универсальности :(

D
28.10.2016
10:35:44

Антон
28.10.2016
10:35:56

D
28.10.2016
10:36:06
оке, на си

Google

D
28.10.2016
10:36:20
хотя там уже компайл-тайм кроссплатформенность типа

Lev
28.10.2016
10:36:38
Я всё про табы вбрасывал. Но переход на асм зачётен ?

D
28.10.2016
10:36:57
?

Nikolay
28.10.2016
10:58:52
может быть кто-то сможет подсказать? https://scalafiddle.io/sf/rP1HbxF/0
как сделать, чтобы это было ошибкой компиляции?
чтобы нельзя было определить класс который наследуется от Base без явного указания типа type A = Something

Vladimir
28.10.2016
11:00:21
в таком виде никак, можешь Aux тип сделать, в котором A будет в позиции тайп-параметра
ща
а не. с extends не выйдет, от такого alias'a нельзя наследовать

Nikolay
28.10.2016
11:03:54
а почему вообще это компилируется? я немного в замешательстве

Mikhail
28.10.2016
11:04:10
а использование этого типа есть?

Vladimir
28.10.2016
11:04:24
да, поидее если ты добавишь метод, то все шваркнется
он потребует abstract
trait Base {
type A
def a:A
}
так уже не будет компилиться. интересный сценарий, зачем тебе просто тип?

Nikolay
28.10.2016
11:08:54
https://scalafiddle.io/sf/rP1HbxF/2
примерно для этого
точнее вот https://scalafiddle.io/sf/rP1HbxF/3

Denis
28.10.2016
11:10:09
а зачем type member?
можно же trait Request[R <: Response]

Google

Denis
28.10.2016
11:10:46
case class GetUserName(id: Int) extends Request[UserNameResponse]

Nikolay
28.10.2016
11:10:58
а как его потом достать?

Aleksei
28.10.2016
11:11:11
имплиситли

Denis
28.10.2016
11:11:22
чем def handleGetUserName(id: Int): GetUserName#Resp = ??? отличается от def handleGetUserName(id: Int): UserNameResponse = ???
вот если бы def handle[R <: Response](request: Request[R]): R тогда да
а так смысла не вижу

Vladimir
28.10.2016
11:13:40
ну да, или через typeclass можно сделать обвязку, вообще ничего не наследуя. я согласен что type member тут не самое лучшее решение

Mikhail
28.10.2016
11:15:44
чтобы из баунда класс получить - надо же ClassTag передать, а его в трейт в баундах не засунешь

Nikolay
28.10.2016
11:16:01
type member мне синтаксически более понятным показался.
case class GetUserName(id: Int) extends Request[UserNameResponse]
case class GetUserName(id: Int) extends Request {
override type Resp = UserNameResponse
}

Mikhail
28.10.2016
11:16:43
промежуточный класс который не трейт и туда уже с класстагом прокинется
def fromClassTag[T: ClassTag]:Class[T] = implicitly[ClassTag[T]].runtimeClass.asInstanceOf[Class[T]]

Nikolay
28.10.2016
11:18:05
ну, в общем меня на самом деле больше интересовал вопрос, почему type member можно не определять в классе который наследуется от трейта, а мне как всегда сказали почему мне это не нужно)

Mikhail
28.10.2016
11:18:49
видно спецификация у него такая, что не требует явного определения)

Nikolay
28.10.2016
11:18:51
да, вариант trait Request[R <: Response] я смотрел

Mikhail
28.10.2016
11:19:01
там Unit скорее всего по умолчанию

Denis
28.10.2016
11:19:12
там this.type
или нет

Nikolay
28.10.2016
11:19:22
да, наверное да
нет

Google

Denis
28.10.2016
11:20:20
нет )

Mikhail
28.10.2016
11:32:24
class scala.runtime.Nothing$

Denis
28.10.2016
11:34:16
Nothing <: Response
все сходится

Mikhail
28.10.2016
11:56:36
https://scalafiddle.io/sf/mhQ303K/0
так пойдет?

Nikolay
28.10.2016
12:28:40
?спасибо

Mikhail
28.10.2016
12:29:37
класстаг прокинул, потом из него в рантайме класс достал

Nikolay
28.10.2016
12:29:47
а, ясно

Mikhail
28.10.2016
12:31:29
https://scalafiddle.io/sf/HMb6VKZ/0

Vladimir
28.10.2016
14:14:17
Кто-то пробовал mockать implicit class или как можно изящно заpimpaть библиотеку, добавив в нее метод, но чтобы иметь возможность его мокать?

Nick
28.10.2016
14:15:23
фраза мокать имплисит класс уже звучит странно

Vladimir
28.10.2016
14:16:27
так вышло ? временную затычку через него запилил, пока пулреквест не примут, а тестить-то хочется

Nick
28.10.2016
14:16:53
а в чем проблема тогда?

Mikhail
28.10.2016
14:17:15
собрал, разобрал, использовал)

Nick
28.10.2016
14:17:36
ты хочешь замокать результат метода? тогда делай val m = mock[YourImplicitClass]