Alguna ayudita en: Case-to-case inheritance has potentially dangerous bugs which are unlikely to be fixed. You are strongly encouraged to instead use extractors to pattern match on non-leaf nodes

46 views
Skip to first unread message

Pablo Zebraitis

unread,
Feb 22, 2013, 9:24:51 AM2/22/13
to scala-users-...@googlegroups.com
  abstract case class Value(val code: String, val decription: String)
  case object Undef extends Value("", "undef" )
  case object I_IATA_PricedByFareServer extends Value("I", "IATA priced by Fare Server" )
  case object A_ATAF_PricedByFareServer extends Value("A", "ATAF priced by Fare Server")
  case object M_ManuallyCreatedTST extends Value("M", "Priced by Manually created TST (with fare server interaction)")
  case object N_ManuallyCreatedTST_WFSI extends Value("N", "Priced by Manually created TST (without fare server interaction for future use)")
  case object B_NegotatiatedRateForG extends Value("B", "Negotatiated Rate (F) or (G) that has been manually updated")
  case object G_NegotatiatedWithAgentConsolidator extends Value("G", "Negotiated Rate with Agent/Consolidator as net updater")
  case object F_NegotatiatedWithAirline extends Value("G", "Negotiated Rate with Airline as net updater")
  case object O_RBD_override extends Value("O", "RBD override")
  case object T_IATA_InclusiveTour extends Value("T", "IATA priced Inclusive Tour (IT) priced by Fare Server")


when compiling with -deprecation:

scala: case class `object Undef' has case ancestor `class Value'.  Case-to-case inheritance has potentially dangerous bugs which are unlikely to be fixed.  You are strongly encouraged to instead use extractors to pattern match on non-leaf nodes.
  case object Undef extends Value("", "undef" )
              ^

alguna idea de como evitarlo?

Gabriel Claramunt

unread,
Feb 22, 2013, 9:34:31 AM2/22/13
to scala-users-...@googlegroups.com
Alguna necesidad especial de que sea case class ? Sobre todo si es abstract, con class pelado o trait deberia alcanzar



--
Has recibido este mensaje porque estás suscrito al grupo "Scala Users Group Uruguay" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a scala-users-group-...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--
Gabriel Claramunt
Twitter: @gclaramunt

Tomás Lázaro

unread,
Feb 22, 2013, 9:37:57 AM2/22/13
to Pablo Zebraitis, scala-users-...@googlegroups.com
Podes probar la clase padre declararla como trait con vals abstractos. 

trait Parent {
  val name: String
}

case class Child(name: String) extends Parent

Como 'name' coincide te lo considera como override o implementación. Podes hacer 'sealed' la trait esa si querés también. 

Pablo Zebraitis

unread,
Feb 22, 2013, 9:44:25 AM2/22/13
to scala-users-...@googlegroups.com
Tenés razón, no había necesidad de que sea case class. gracias.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a scala-users-group-uruguay+unsub...@googlegroups.com.

Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

Pablo Zebraitis

unread,
Feb 22, 2013, 9:46:43 AM2/22/13
to scala-users-...@googlegroups.com, Pablo Zebraitis
No sabía que lo consideraba como override, esta bueno.
Pero no es el caso lo que quiero hacer son Objects y por claridad está bueno que se definan el en constructor del parent.
Gracias! ;)
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a scala-users-group-uruguay+unsub...@googlegroups.com.

fedesilva

unread,
Feb 22, 2013, 9:48:36 AM2/22/13
to scala-users-...@googlegroups.com
Si, yo solo defino case clases como nodos hoja. 
Reply all
Reply to author
Forward
0 new messages