Slide 22
Slide 22 text
Roleオブジェクト
- メッセージパッケージにRoleオブジェクトを作る
- Scalaの場合、型クラスとして作成すると扱いやすい
package message
import groupChat.GroupChat
trait MessageRole[A] {
def createMessage(self: A)(accountId: AccountId, body: String): Message
}
object MessageRole {
implicit val groupChatMessageRole = new MessageRole[GroupChat] {
override def createMessage(self: GroupChat)(accountId: AccountId, body: String): Message = ???
}
implicit def toMessageRoleOps[A: MessageRole](self: A) = new {
def createMessage(accountId: AccountId, body: String): Message =
implicitly[MessageRole[A]].createMessage(self)(accountId, body)
}
}