Option(ale) jako pola zamiast nulli?

Odpowiedz Nowy wątek
2019-10-30 14:55
0

Załóżmy że mamy klasę (dataclass Kotlinowa) np. Issue które ma opcjonalne pole assignedTo typu UserId które może być puste - czy najlepszym sposobem nie jest po prostu stosowanie Option/Optionala jako typu tego opcjonalnego pola ?. W czystym Kotlinie nie mamy co prawda Optiona,ale są biblioteki


data class Issue(val assignedTo: Option<UserId> = Option.none()) {} 

Nie pomagam przez PM. Pytania zadaje się na forum.
edytowany 1x, ostatnio: scibi92, 2019-10-30 14:55

Pozostało 580 znaków

2019-11-29 16:05
0

Nie znam się specjalnie na praktykach w Kotlinie, ale nie da się zrobić czegoś w stylu:

enum class Issue {
  CREATED,
  ASSIGNED {
    var to: UserId
  },
  CLOSED {
    var by: UserId
  }
}

Bo to chyba byłoby najczytelniejsze rozwiązanie na maszynę stanu skończonego automat skończony jaką są stany w jakich może się znaleźć issue.

edytowany 1x, ostatnio: hauleth, 2019-11-29 18:29
Wartości enuma też musza być statyczne. var to:UserId musiałoby zostać zainicjowane raz i tej wartości nie można by już zmienić. - piotrpo 2019-11-29 17:20
Ok, nie wiedziałem, w Ruscie coś takiego jest dozwolone i myślałem, że może Kotlin też wspiera. - hauleth 2019-11-29 18:29

Pozostało 580 znaków

2019-11-29 16:18
0

Po 1. chyba skończoną maszynę stanów, a nie stanu skonczonego (no chyba że o czyms nie wiem? :) ), a po 2. wydaje mi sie ze to rozwiązanie w żaden sposób nie zapewnia odpowiednich niezmienników (przejścia nie powinny być dowolne z każdego stanu w każdy).

Za dużo po angielsku gadam i jakoś tak dosłownie przetłumaczyłem FSM. - hauleth 2019-11-29 18:29

Pozostało 580 znaków

2019-11-29 17:45
0

@hauleth: enumy to takie "singletony" więc nie ;]


Nie pomagam przez PM. Pytania zadaje się na forum.

Pozostało 580 znaków

2019-11-29 18:42
2

@hauleth: szukasz czegoś co się nazywa algebraiczny typ danych i w kotlinie jest wspierane przez sealed class


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.
No i dokładnie taka propozycja padła na początku wątku. :) - tdudzik 2019-11-29 19:18

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0