defcreateCustomer(name : String, state : String, domain : String) : Option[Customer] = { deferror(message : String) : Option[Customer] = { println(message) None } (name, state, domain) match { case ("", _, _) => error("Name cannot be blank") case (_, "", _) => error("State cannot be blank") case (_, _, "") => error("Domain cannot be blank") case _ => newSome(newCustomer( 0, name, state, domain, true, newContract(Calendar.getInstance, true), List() ) ) } }
用 case 关键字修饰类
1 2 3 4 5 6 7 8
caseclassCustomer(val customer_id : Integer, val name : String, val state : String, val domain : String, val enabled : Boolean, val contract : Contract, val contacts : List[Contact]) { }
1 2 3 4 5 6 7 8 9 10 11 12
defcountEnabledCustomersWithNoEnabledContacts(customers : List[Customer], sum : Integer) : Integer = { customers match { caseList() => sum case cust :: custs => { if (cust.enabled && cust.contacts.exists({ contact => contact.enabled})) countEnabledCustomersWithNoEnabledContacts(custs, sum + 1) else countEnabledCustomersWithNoEnabledContacts(custs, sum) } } }
1 2 3 4 5 6 7 8 9 10 11
defcountEnabledCustomersWithNoEnabledContacts(customers : List[Customer], sum : Integer) : Integer = { customers match { caseList() => sum caseCustomer(_,_,_,_,true,_,cont) :: custs if cont.exists({ contact => contact.enabled}) => countEnabledCustomersWithNoEnabledContacts(custs, sum + 1) case cust :: custs => countEnabledCustomersWithNoEnabledContacts(custs, sum) } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14
defcountEnabledCustomersWithNoEnabledContacts(customers : List[Customer], sum : Integer) : Integer = { customers match { caseList() => sum caseCustomer(_,_,_,_,true,_,List()) :: custs => countEnabledCustomersWithNoEnabledContacts(custs, sum) caseCustomer(_,_,_,_,true,_,cont) :: custs if cont.exists({ contact => contact.enabled}) => countEnabledCustomersWithNoEnabledContacts(custs, sum + 1) case cust :: custs => countEnabledCustomersWithNoEnabledContacts(custs, sum) } }