Как передать неявный параметр в неявный класс - PullRequest
0 голосов
/ 21 октября 2018

Я хочу передать неявный параметр моему типу pimped, как я делаю в реальном типе.Но поскольку неявные классы принимают только один параметр, у меня нет способа неявно передать параметр моему новому типу.

package com.abc.xyz

class Pet(val petName: String){
  override def toString = petName
}

class PetLover(val name: String)(implicit val pet: Pet) {
  def showLove = s"${name} shows love, ${pet} waves tail"
}

Я пытаюсь включить PetLover в PetTrainer и добавить новый метод train:

package com.abc

import com.abc.xyz.PetLover

package object mno {
  implicit class PetTrainer(val trainer: PetLover) extends AnyVal{
    def train = s"${trainer.name} show hand," //${pet} high fives"
  }
}

Что я могу сделать, чтобы сделать Pet доступным для PetTrainer неявно?

1 Ответ

0 голосов
/ 21 октября 2018

Значение уже доступно через trainer.pet:

def train = s"${trainer.name} shows hand, ${trainer.pet} high fives"

Если это не так, вы можете добавить неявный параметр к train:

def train(implicit pet: Pet) = s"${trainer.name} shows hand, ${pet} high fives"
...