A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Pattern Matching

13/36
Recursos

Aportes 17

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

case class Persona(nombre: String, edad: Int)

val p1 = Persona("Maria", 20)
val p2 = Persona("Freddy", 15)

def h(x: Persona) = x match {
  case y if y.nombre == "Maria" && y.edad >= 18 => "Esta Maria es mayor de edad"
  case y if y.nombre == "Maria" && y.edad <= 18 => "Esta Maria es menor de edad"
  case y if y.edad >= 18 => "Mayor de edad"
  case _ => "No es mayor de edad"
}```
val p1 = Person("maria",15)

val p2 = Person("maria",28)

val p3 = Person("diana",25)

def h(x: Person) = x match {
    case x if x.nombre == "maria" && x.edad >= 18 => "Puedes entrar a la disco Maria"
    case x if x.nombre == "maria" && x.edad < 18 => "Lo siento, no puedes entrar a la disco Maria"
    case _ => "Solo Marias"
    }

Mi soluci贸n al reto:

// Models
case class Person(name:String,age:Int)

// Data
val vip_people_name = List("Maria")

val people = List(
  Person("Amanda",16),
  Person("Betsabet",42),
  Person(vip_people_name(0),16),
  Person(vip_people_name(0),31)
)

// Constants
val AGE_OF_MAJORITY = 18

// Utils
def checkHasMajority(age:Int) = age >= AGE_OF_MAJORITY

//Controllers
def getPersonValidated(person:Person,vip_people_name:List[String]) = {
  val isVip = vip_people_name.contains(person.name)
  val hasMajority = checkHasMajority(person.age)
  person match {
    case selected if hasMajority && isVip => selected.name + " es mayor de edad y es VIP"
    case selected if !hasMajority && isVip => selected.name + " es menor de edad pero es VIP"

    case selected if hasMajority => selected.name +  " es mayor de edad"
    case _ => person.name + " no es mayor de edad"
  }
}

// Views
def presenter(validatedPeople:List[String]) = {
  println("---------------------")
  validatedPeople.map(personValidated=> println(personValidated))
  println("---------------------")
}

// Rendering view
presenter(people.map((person)=>getPersonValidated(person,vip_people_name)))

Creo que ser铆a mejor que ense帽ar谩 a desarrollar usando siempre nombres de variables y funciones claros y legibles, no h o x

def h(x: Persona) = x match {
      case Persona("Maria", a) if a >= 18 => "Maria eres mayor de edad"
      case Persona("Maria", a) if a < 18 => "Maria no eres mayor de edad"
      case y if y.edad >= 18 => "Mayor de edad"
      case _ => "No es mayor de edad
 }
def h(x: Persona) = x match {
	case y if y.edad >= 18 && y.nombre!="Maria"=> "Mayor de edad"
	case y if y.edad >= 18 && y.nombre=="Maria" => "Se llama Maria y es mayor de edad"
	case y if y.edad < 18 && y.nombre=="Maria" => "Se llama Maria y es menor de edad"
	case _ => "Menor de edad"
	}
scala> def h(x: Persona) = x match {
     |   case y if y.nombre.equals("Maria") => y match {
     |     case z if z.edad >= 18 => "Maria ya eres grandecita"
     |     case _ => "Maria eres aun una ni帽a"
     |   }
     |   case _ => "Otra persona"
     | }
h: (x: Persona)String

scala> h(p1)
res6: String = Maria ya eres grandecita

scala> h(p2)
res7: String = Otra persona

scala> h(Persona("Maria", 13))
res8: String = Maria eres aun una ni帽a

Reto

Reto:

Mi soluci贸n al reto

object Eval {
case class Persona(nombre: String, edad: Int)
def edad(x: Int) : String = if (x > 18) 鈥淢ayor de edad鈥 else "No es mayor de edad"
def h(x: Persona) : String = x match {
case Persona (鈥淢aria鈥, ) => "Es Maria y " + edad (x.edad)
case Persona (
, _) => "No es Maria y " + edad (x.edad)
}
}
val p1 = Eval.Persona(鈥淢aria鈥, 20)
val p2 = Eval.Persona(鈥淔redy鈥, 15)
Eval.h(p1)
Eval.h(p2)

scala> case class Postulante(nombre:String,edad:Int,ponderado:Int);
defined class Postulante

scala> val pstl1 = Postulante("Maria",15,19);
pstl1: Postulante = Postulante(Maria,15,19)

scala> val pstl2 = Postulante("Maria",20,17);
pstl2: Postulante = Postulante(Maria,20,17)

scala> val pstl3 = Postulante("Juan",20,11);
pstl3: Postulante = Postulante(Juan,20,11)

scala> def Reto(pstl: Postulante) = pstl match{
     |   case y if pstl.nombre == "Maria" && pstl.edad >= 18 => pstl.nombre + " es Mayor de Edad"
     |   case z if pstl.nombre == "Maria" && pstl.edad < 18 => pstl.nombre + " es Menor de Edad"
     |   case _ => "No es Maria!"
     | }
Reto: (pstl: Postulante)String

scala> Reto(pstl1);
res0: String = Maria es Menor de Edad

scala> Reto(pstl2);
res1: String = Maria es Mayor de Edad

scala> Reto(pstl3);
res2: String = No es Maria!
def response(p: Person) = p match {
     |  case Person("Maria",_) if p.age >= 18 => "Hola  Maria ya eres mayor de edad"
     |  case r if r.age >= 18 => s"Hola ${r.name} ya eres mayor de edad"
     |  case _ => s"Hola ${p.name} eres baby todavia"
     | }

Aqui esta mi aporte

case class Persona(nombre: String, edad: Int)
    def fiesta(x: Persona)= {
      x match {
        case y if y.edad >= 18 && y.nombre.toLowerCase() == "maria" => "Esta Maria si puede  entrar"
        case y if y.edad<=18 && y.nombre.toLowerCase() == "maria" => "Esta Maria no puede entrar"
        case _ => "Donde esta Maria?"
      }
    }
    val persona1 = Persona("Maria",20)
    val persona2 = Persona("maria",14)
    val persona3 = Persona("Andrea",45)
    println(fiesta(persona1))
    println(fiesta(persona2))
    println(fiesta(persona3))

Listo!!

def m(x: Persona) = x match {
case y  if  y.edad >= 18 && y.nombre == "Maria" => "Hola Maria! Eres mayor de edad"
case y if y.edad < 18 && y.nombre =="Maria" => "Hola maria! No eres mayor de edad"
case y  if  y.edad >= 18 && y.nombre == "Jose" => "Hola Jose! Eres mayor de edad"
case y if y.edad < 18 && y.nombre =="Jose" => "Hola Jose! No eres mayor de edad"
case _ => "驴Quien eres?"
}
case class Person(name:String, age:Int)

def isOlder(x:Person) = x match {
    case m1 if m1.age < 18 && m1.name == "Maria" => "Maria es menor de edad"
    case m2 if m2.age >= 18 && m2.name == "Maria" => "Maria es mayor de edad"
    case m3 if m3.age > 18 =>  s"$x es menor de edad "
    case _ => "es mayor de edad"
}

Este tipo de cursos deben ser impartidos por profesores con fundamentos y experiencia en matem谩ticas, preferiblemente con conocimientos de lenguajes formales y paradigmas de lenguajes de programaci贸n

scala> case class Persona(nombre: String, edad: Int )
class Persona

scala> val ejm1 = Persona("Fredy", 15)
val ejm1: Persona = Persona(Fredy,15)

scala> val ejm2 = Persona("Maria", 20)
val ejm2: Persona = Persona(Maria,20)

scala> val ejm3 = Persona("Maria", 16)
val ejm3: Persona = Persona(Maria,16)

scala> def ejmfunction(x: Persona) = x match {
     | case a if a.nombre == "Maria" => a match {
     |    case a1 if a1.edad >= 18 => "Maria es mayor de edad"
     |    case _ => "Maria es menor de edad"
     | }
     | case _ => "eres otra persona"
     | }
def ejmfunction(x: Persona): String

scala> ejmfunction(ejm1)
val res7: String = eres otra persona

scala> ejmfunction(ejm2)
val res8: String = Maria es mayor de edad

scala> ejmfunction(ejm3)
val res9: String = Maria es menor de edad