我是 Scala 的新手,我有一個這樣的案例類:
case class Student(
name: String,
age: Option[Int] = None,
id: String
)
和另一個這樣的案例類:
case class Member(
id: String,
`type`: String,
name: String
)
我想以這樣的方式創建一個隱式助手:
case class Member(
id: String,
`type`: String,
name: String
)
object Member {
implicit def toStudent(member:Member):Student = Student(member.name,None,member.id)
}
然后像這樣呼叫方法:
val newMember = Member("abc","Student","John")
val student = newMember.toStudent
或類似的東西。這在 Scala 中是否可行,因為我在很多地方都看到了很多與此類似的花哨語法?
uj5u.com熱心網友回復:
在 Scala 3 中,您可以使用擴展方法:
// ...
extension (member: Member)
def toStudent: Student = Student(member.name, None, member.id)
val newMember = Member("abc", "Student", "John")
val student = newMember.toStudent
對于 Scala 2,您可以定義顯式轉換:
import scala.language.implicitConversions
object Member {
implicit def toStudent(member: Member): Student =
Student(member.name, None, member.id)
}
val newMember = Member("abc", "Student", "John")
val student = newMember: Student
或使用隱式類裝飾器:
implicit class MemberDecorator(val member: Member) extends AnyVal {
def toStudent(): Student = Student(member.name, None, member.id)
}
val newMember = Member("abc", "Student", "John")
val student = newMember.toStudent()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/530958.html
