Scala Traits - 如何实现方法
Scala Traits - how to implement method
如何从下面 Employee
对象内部的 Person
特征(接口)正确扩展和实现方法 sendEmail
以便 main 执行:
trait Person {
var name:String
var gender:Char
def sendEmail(subject:String, body:String)
}
object Employee extends Person {
def main(args: Array[String]): Unit = {
println("Hello")
sendEmail("a", "b")
def sendEmail(subject:String, body:String): Unit = {
println("subject" + body)
}
}
}
该方法需要是对象的成员,而不是另一个函数 (main) 中的函数。尝试:
object Employee extends Person {
def sendEmail(subject:String, body:String): Unit = {
println("subject" + body)
}
def main(args: Array[String]): Unit = {
println("Hello")
sendEmail("a", "b")
}
}
您需要实现特征 Person
中声明的所有成员和方法。此外,假设您有多个员工,class
(或 case class
)可能比 object
:
更合适
trait Person {
val name: String
val gender: Char
def sendEmail(subject: String, body: String): Unit
}
class Employee(val name: String, val gender: Char) extends Person {
def sendEmail(subject: String, body: String): Unit =
println(s"subject: $subject\n body: $body")
}
object ListEmployees {
def main(args: Array[String]) {
val emp1 = new Employee("Dave", 'M')
val emp2 = new Employee("Jenn", 'F')
emp1.sendEmail("yo", "yo yo yo")
emp2.sendEmail("boo", "boo boo boo")
}
}
ListEmployees.main(Array())
// subject: yo
// body: yo yo yo
// subject: boo
// body: boo boo boo
如何从下面 Employee
对象内部的 Person
特征(接口)正确扩展和实现方法 sendEmail
以便 main 执行:
trait Person {
var name:String
var gender:Char
def sendEmail(subject:String, body:String)
}
object Employee extends Person {
def main(args: Array[String]): Unit = {
println("Hello")
sendEmail("a", "b")
def sendEmail(subject:String, body:String): Unit = {
println("subject" + body)
}
}
}
该方法需要是对象的成员,而不是另一个函数 (main) 中的函数。尝试:
object Employee extends Person {
def sendEmail(subject:String, body:String): Unit = {
println("subject" + body)
}
def main(args: Array[String]): Unit = {
println("Hello")
sendEmail("a", "b")
}
}
您需要实现特征 Person
中声明的所有成员和方法。此外,假设您有多个员工,class
(或 case class
)可能比 object
:
trait Person {
val name: String
val gender: Char
def sendEmail(subject: String, body: String): Unit
}
class Employee(val name: String, val gender: Char) extends Person {
def sendEmail(subject: String, body: String): Unit =
println(s"subject: $subject\n body: $body")
}
object ListEmployees {
def main(args: Array[String]) {
val emp1 = new Employee("Dave", 'M')
val emp2 = new Employee("Jenn", 'F')
emp1.sendEmail("yo", "yo yo yo")
emp2.sendEmail("boo", "boo boo boo")
}
}
ListEmployees.main(Array())
// subject: yo
// body: yo yo yo
// subject: boo
// body: boo boo boo