Size: a a a

Elm Lang сообщество разработчиков

2020 August 13

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
type Msg
 = PortMsg PortMsg
 | OtherMsg
  ...

type PortMsg
 = Foo
 | Bar
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Не должен порт уметь посылать любое из возможных сообщений
источник

MP

Max P in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Не должен порт уметь посылать любое из возможных сообщений
да, я это не имел ввиду.. но как дальше.

Например, модуль А интересуется только сообщением Foo
а модуль Б только Bar

Значит в А в update мы добавим _ для всех остальных PortMsg, которые не Foo?
источник

MP

Max P in Elm Lang сообщество разработчиков
вопрос скорее о том, как не делать чтобы:

type PortMsgA =
 FooA
 BarA

type PortMsgB =
 FooB
 BarB

а сделать один:

type PortMsg =
 FooA
 BarA
 FooB
 BarB

и как при этом в update внутри модуля А и Б это разруливать
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Max P
да, я это не имел ввиду.. но как дальше.

Например, модуль А интересуется только сообщением Foo
а модуль Б только Bar

Значит в А в update мы добавим _ для всех остальных PortMsg, которые не Foo?
import A
import B

type Msg = MsgA A.Msg | MsgB B.Msg
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Max P
вопрос скорее о том, как не делать чтобы:

type PortMsgA =
 FooA
 BarA

type PortMsgB =
 FooB
 BarB

а сделать один:

type PortMsg =
 FooA
 BarA
 FooB
 BarB

и как при этом в update внутри модуля А и Б это разруливать
Никак не сделать. Конструктор значений не может принадлежать нескольким типам.
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Хотите в A и B иметь отдельные сообщения для порта — заводите. И собирайте в отдельную сумму, используемую только для порта
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
type MsgA = PortA PortA | NonPortA NonPortA
type PortA = ...
type NonPortA = ...

type MsgB = PortB PortB | NonPortB NonPortB
type PortB = ...
type NonPortB = ...

type Msg
 = MsgA MsgA
 | MsgB MsgB

type PortMsg = PortA PortA | PortB PortB

На порт нужно будет мапнуть PortMsg -> Msg
источник

MP

Max P in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
type MsgA = PortA PortA | NonPortA NonPortA
type PortA = ...
type NonPortA = ...

type MsgB = PortB PortB | NonPortB NonPortB
type PortB = ...
type NonPortB = ...

type Msg
 = MsgA MsgA
 | MsgB MsgB

type PortMsg = PortA PortA | PortB PortB

На порт нужно будет мапнуть PortMsg -> Msg
спасибо, есть над чем подумать. Думаю это то что нужно.
источник
2020 August 17

MP

Max P in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Хотите в A и B иметь отдельные сообщения для порта — заводите. И собирайте в отдельную сумму, используемую только для порта
думаю получилось, спасибо )
источник

MP

Max P in Elm Lang сообщество разработчиков
вопрос, по remote data, структура ясна и понятна... стоит ли тащить этот пакет в проект, или можно самому использовать подобный тип и не добавлять зависимость:
type RemoteData e a
   = NotAsked
   | Loading
   | Failure e
   | Success a
источник

MP

Max P in Elm Lang сообщество разработчиков
какие плюсы от использования уже готового пакета в случае с remoteData ?
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Max P
какие плюсы от использования уже готового пакета в случае с remoteData ?
Никаких. Там кода в пакете на 100 строк
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Max P
вопрос, по remote data, структура ясна и понятна... стоит ли тащить этот пакет в проект, или можно самому использовать подобный тип и не добавлять зависимость:
type RemoteData e a
   = NotAsked
   | Loading
   | Failure e
   | Success a
Никаких. Не используй его и свой не пиши
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
До тех пор пока у тебя в модели одна такая ерунда - все в порядке. Как только две - уже сплошные проблемы.
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Исключение - не связанные никак сущности, например данные для разных страниц (при условии что для страницы нужны только эти данные и больше ничего)
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Но такое бывает редко
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
А так представь что тебе надо написать вьюха от двух ремоут дата... а от трёх?
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
На деле же у тебя в приложении есть определенный воркфлоу, когда одни данные не имеют смысла без других... вот этот воркфлоу и разрабатывай. Тебе нужно моделировать стейт своего приложения, а не Стэйт вэба
источник

MP

Max P in Elm Lang сообщество разработчиков
Denis интересно, спасибо
источник