@scala_ru

Страница 348 из 1499
Alexander
19.12.2016
14:54:20
Гайс, есть для Скаламока какие-нибудь линзы, чтобы вложенные моки создавать без боли? Да и не обязательно Скаламок, вообще что-нибудь подобное бы найти.

Kirill
19.12.2016
14:58:56
trait MyMap[K, V] trait MyTrait[K, V, MapType <: MyMap[K, V]]{ type Impl <: MapType } trait MyMap1 extends MyMap[Int, String] class A extends MyTrait[Int, String, MyMap1]{ class Impl extends MyMap1 }
да, такое я соорудил, но я совсем оборзел и хотел последнее записать без Int, String ?

Oleg
19.12.2016
15:00:14
да, такое я соорудил, но я совсем оборзел и хотел последнее записать без Int, String ?
ну можно вообще всё сделать там type memberами, вместо type parameter ов

trait MyMap{ type Key type Value } trait MyTrait[MapType <: MyMap]{ type Impl <: MapType } trait MyMap1 extends MyMap{ type Key = Int type Value = String } class A extends MyTrait[MyMap1]{ class Impl extends MyMap1{ override type Key = Int override type Value = String } }

Google
Oleg
19.12.2016
15:04:56
Отличается приблизительно ничем

Mikhail
19.12.2016
15:06:26
кто-нибудь может пояснить какие преимущества у этого лапшестроительства перед trait MyMap1 extends MyMap[String,Int] ?

Oleg
19.12.2016
15:12:23
кто-нибудь может пояснить какие преимущества у этого лапшестроительства перед trait MyMap1 extends MyMap[String,Int] ?
автор не хотел примешивать MyMap1, хотел юзать где-то внутри, удостоверившись, что типы не сломались, а уточнить что конкретно он хотел юзать он хотел с помощью аргумена в какой-то свой MyTrait

Mikhail
19.12.2016
15:13:04
не заметил в его словах такого. но видел, что ему хочется использовать альяс для пары типов

Oleg
19.12.2016
15:16:12
он хочет передать свой MyMap1 внутрь какого-то MyTrait а

всё это, конечно, непонятно без нормального примера

Mikhail
19.12.2016
15:17:16
помимо кода я смотрю, что он словами написал)

поэтому да, подождем полного куска кода) а то может там действительно причины какие-то есть для лапшишки)

Anatoliy
19.12.2016
17:16:58
Народ, посоветуйте пожалуйста что можно почитать по событиям и как создавать их и слушателей для них?

Nick
19.12.2016
17:19:22
@fomkin напомни ресурс с курсом по скале, который ты скидывал

Kirill
19.12.2016
17:22:22
добрался до дома, хотел сделал вот так https://scalafiddle.io/sf/Zt9bA5u/0 с подсказками зала, спасибо!

В этой штуке если поменять class ConcreteMap extends Map[String, Int] на предположим class ConcreteMap extends Map[Int, String] , то ошибка компиляции, это мне и было нужно

Google
Anatoliy
19.12.2016
17:24:13
По событиям пока нашел такое: http://stackoverflow.com/questions/16267616/akka-event-bus-tutorial Но это акка и соответственно акторы, а мне надо связать события вне акторов со слушателями в них же. Да еще и объявлять их не в preStart, а при опять же определенных условиях. И если условия исчезают - отключать.

Kirill
19.12.2016
17:27:43
эм... а зачем оно вам вообще оказалось надо если не секрет?
Нужно для того, чтобы когда сигнатуру ConcreteMap кто-то поменяет потом, у них ошибка при компиляции была. В логике создаются параметризованные инстансы внешнего ресурса, то есть если бы я не поставил там F <: Map, то сигнатуру ConcreteMap поменяли бы, про мой код забыли, оно бы скомпилировалось, и в рантайме упало, потому что внешний ресурс уже работает с другой схемой данных

Надеюсь, понятно объяснил

Anatoliy
19.12.2016
17:28:32
Надеюсь, понятно объяснил
Да, понятно, спасибо. Я с этим не сталкивался т.к. пока не писал код который бы использовали как черный ящик, но теперь буду иметь в виду

Wystan
19.12.2016
18:10:32
спасибо тем, кто aj.ru порекомендовал. довольно оперативно отвечали на вопросы и на следующий день привезли мне новенький макбук с 15, который в принципе тяжело где-то найти даже у реселлеров (у реселлеров еще на 20 тыщ дороже он)

причем у меня был нерусский номер в роуминге и курьер связался по телеграму со мной. прогрессивно.

Kirill
19.12.2016
18:19:17
Парни, у меня новая беда. https://scalafiddle.io/sf/Zt9bA5u/2 это не компилируется, хотя идея ничего не подсвечивает

В начале убрать пакет и объект само собой

исправленное https://scalafiddle.io/sf/Zt9bA5u/3

Зачем так делается - CollectionContainer это обертка, которая отправляется на кластер и выполняется на нём. Внутри я буду инжектить непосредственно саму проперти collection, не суть. Хотел я на самом деле разделить на части вот этот контейнер и поведение, т.е. что мне нужно будет сделать с коллекцией, то есть чтобы на любой тип коллекции, мне достаточно было сделать свой класс, который описывает, как эту коллекцию обрабатывать, дальше запихивать это всё в CollectionContainer, отсылать, и это там бы выполнялось

Anatoliy
19.12.2016
18:26:11
Я конечно мало чего там понимаю, но не может быть там дело в (b: F) ?

Kirill
19.12.2016
18:26:13
И чтобы при этом выполнялась изначальная цель - при смене сигнатуры конкретной коллекции всё падало на компиляции и говорило "а меня ты забыл поменять"

Anatoliy
19.12.2016
18:27:20
А ну да, это к контейнеру относится

Kirill
19.12.2016
18:29:52
Я вот и не могу понять, что он вывести не может

Anatoliy
19.12.2016
18:31:04
Мысли дилетанта интересны?

Kirill
19.12.2016
18:31:25
конечно

Google
Anatoliy
19.12.2016
18:33:47
class Collection1Behaviour extends Behaviour[String, Int, Collection1, Either[Throwable, Int]] { и class CollectionContainer[K, V, R, F <: Behaviour[K, V, Collection[K, V], R]](b: F) { Мы скармливаем внутрь Colection1, т.е. Collection1 - это F. Значит смотрим из чего оно состоит. K - String, V - Int, R - Collection1 - Collection[String, Int] F - Collection1Behavior в общем я бы сказал что тут что-то пропущено или поменяно местами....

Behaviour[K, V, F <: Collection[K, V], R] { - опять же K, V, F, где уже F - Collection1

Где-то тут косяк мне кажется по типам если смотреть

Wystan
19.12.2016
18:36:49
ты же записал мой ник? а? выходит что нет?
персональное спасибо Алексею Терехину! (ты кстати не тот терехин, который на физтехо-борде постоянно пасты про то как он в очередной раз написал заяву и отправил ее по инстанциям в ебурге?)

какой в итоге взял?
взял 15 последний макбук про, там надо переучиваться по ходу, нет функциональных клавиш, приходится для шорткатов идеевских зажимать три кнопки теперь

Wystan
19.12.2016
18:46:42
ща разберусь как емаксовские шорткаты в zsh впилить и все будет норм

KrivdaTheTriewe
19.12.2016
18:48:35
А в чем преимущества эмакса в таком языке как скала перед идеей

Nikolay
19.12.2016
18:49:32
ensime там

кому-то он нравится

Wystan
19.12.2016
18:50:24
Ну я емаксовские шортакты просто использую для навигации, и сам емакс как текстовый редактор(org-mode, dired, magit)

Nikolay
19.12.2016
18:50:45
я не смог emacs+ensime пользоваться как основной средой, потому что к idea слишком привык

Mikhail
19.12.2016
18:52:12
не, погоди, в Collection1Behaviour в качестве R скармливаем Either, в качестве F - Collection1.
там похоже ситуация при которой для компилятора String != String & Int != Int из-за баундов

и вот этого Behaviour[K, V, Collection[K, V]

Kirill
19.12.2016
18:54:46
и вот этого Behaviour[K, V, Collection[K, V]
блин, объясни плз, я не могу догнать...вроде когда создаю объекты, он по идее должен же брать из Collection1Behaviour все параметры и подсовывать их в CollectionContainer...

Mikhail
19.12.2016
18:55:58
там компилятор считает, что class CollectionContainer[K, V, R, F <: Behaviour[K, V, Collection[K, V], R]] - K, V для коллекции Collection должны выводиться исходя из CollectionContainer, однако у тебя они выводятся исходя из Collection1 ( из другого места для компилятора)

если Collection1 баунды дальше прокинуть так, чтобы они выше определялись тогда будет компилиться. но ты хочешь этот альяс, поэтому надо подумать сейчас

я поэтому не люблю такие сложные баунды городить, потому что в какой-то момент начинается ад с прокидыванием

Google
Mikhail
19.12.2016
19:21:12
вот так оно компилится. но если честно я не советую так делать, потому что в дальнейшем всплывут различные минусы. когда я дохожу до такого, я понимаю что однозначно пора упрощать, какая бы стройная мысль ни была в голове

Mikhail
19.12.2016
19:22:49
возможно в дотти это пофиксят, но пока приходится компилятору буквально на пальцах обьяснять что он слегка неправ)

Kirill
19.12.2016
19:24:55
возможно в дотти это пофиксят, но пока приходится компилятору буквально на пальцах обьяснять что он слегка неправ)
То есть по сути поменялось только то, что ты добавил явно при создании объекта указание дженерик параметров

Mikhail
19.12.2016
19:25:42
не совсем, вот еще смотри - уже с альясом

Admin
ERROR: S client not available

Kirill
19.12.2016
19:25:42
возможно в дотти это пофиксят, но пока приходится компилятору буквально на пальцах обьяснять что он слегка неправ)
Да, объявлять так для каждой Collection по нескольку алиасов - действительно путь в никуда...

Mikhail
19.12.2016
19:26:13
https://scalafiddle.io/sf/rAzAyMS/0

видишь с альясом работает)

вся суть в том, что компилятору на пальцах показывается за счет S = String что используется один и тот же класс. Но даже после этого приходится в конце еще немного помочь

Kirill
19.12.2016
19:30:17
видишь с альясом работает)
Ага, и придётся для всех типов, которые используются в Collection делать альясы для K, V, R, и поведения :) не, ну нафиг, видимо мысль действительно была не такая светлая, пересмотрел видео с фримонадами) спасибо за помощь)

Nick
20.12.2016
07:08:00
https://github.com/heathermiller/dist-prog-book?files=1

Кто нибудь уже прочитал?

Aleksei
20.12.2016
07:09:13
слишком заняты фримонадами все

Denis
20.12.2016
07:10:38
Но можно дистрибьютить интерпретаторы )

Aleksei
20.12.2016
07:10:57
слишком рано пока что

ок

тогда просто lazy

я просто хз как это все совмещать, на работе нет фп, хочется фримонад потрогать, читаешь, слушаешь, смотришь, пробуешь, открываешь рабочий проект и хочется уволиться, так что фп опасно для работы =)

Google
Denis
20.12.2016
07:13:25
Ну или такая работа опасна для твоего развития )

Nick
20.12.2016
07:14:32
Иди в хаскель уже)

Aleksei
20.12.2016
07:14:46
боже упаси

аж верующим стал на секундочку

Nick
20.12.2016
07:15:06
Че так)

Aleksei
20.12.2016
07:15:19
есть два типа работ, опасна для развитися и второй тип работы опасна для ипотеки =)

Nick
20.12.2016
07:15:32
Фомкин ж сказал, что скала дорога к хаскелю

Denis
20.12.2016
07:15:52
не правда же

Nick
20.12.2016
07:15:53
?

Denis
20.12.2016
07:16:09
я про два типа работ 0

Nick
20.12.2016
07:16:53
@fundamentalparticle а ты уже пишешь на скале? ?

Aleksei
20.12.2016
07:17:31
я про два типа работ 0
я пока не нашел третий тип

Denis
20.12.2016
07:17:43
это другой разговор )

Aleksei
20.12.2016
07:18:00
@fundamentalparticle а ты уже пишешь на скале? ?
сначала надо читать на скале научиться =)

Nick
20.12.2016
07:18:24
@fomkin хватит спать уже, скинь ссылку на туториал по скале.

Протестую

Надо сразу быдлокодить

Aleksei
20.12.2016
07:19:45
вот вся токсичность скала в этом, чуть прочитал что-то и снова искать работу

Страница 348 из 1499