scala: enumy a obiekty statyczne

scala: enumy a obiekty statyczne
Julian_
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1703
0

Dość pokręcone te enumy w porównaniu do javy, więc postanowiłem uprościć sprawę

Która lepsza wersja:

1:

Kopiuj
object HttpSchemas {

    val INDEED_JOB_V1 = "%1$sjobs?as_and=%2$s&as_phr=&as_any=&as_not=&as_ttl=&as_cmp=&jt=all&st=&as_src=&radius=25&l=&fromage=%3$s&limit=10&sort=&psf=advsrch&from=advancedsearch"

}

użycie:

Kopiuj
  val httpSchema = HttpSchemas.INDEED_JOB_V1

2:

Kopiuj
sealed trait HttpSchemas {
  def httpSchema: String
}

object HttpSchemas {

  case object INDEED_JOB_V1 extends HttpSchemas {
    val httpSchema = "%1$sjobs?as_and=%2$s&as_phr=&as_any=&as_not=&as_ttl=&as_cmp=&jt=all&st=&as_src=&radius=25&l=&fromage=%3$s&limit=10&sort=&psf=advsrch&from=advancedsearch"
  }

}

użycie:

Kopiuj
  val httpSchema = HttpSchemas.INDEED_JOB_V1.httpSchema
jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4712
2

Pierwsza wersja to żaden enum - to po prostu stała tekstowa.

A co do lepszości - jak nie potrzebujesz enuma tylko stałej tekstowej to oczywiście użyj stałej.
Enum, który w Scali robi się przez scalowe ADT ma sens wtedy masz kilka możliwych wartości i chcesz jakoś wymusić, żeby tylko te kilka było dopuszczalnych.

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
1

Nie napisałeś po co ci ten enum. To nie wygląda jak enum tylko jak stała, więc wersja nr 1 pasuje do stałej.

Stosujesz konwencje nazewnicze z Javy. W Scali NIE_PISZE_SIĘ_WIELKIMI_LITERAMI, zamiast tego PiszeSięJakośTakBardziejElegancko: https://docs.scala-lang.org/style/naming-conventions.html#constants-values-variable-and-methods

Aktualizacja:
@jarekr000000 szybciej pisze :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.