и почему?
Первый:
sealed trait Behavior
object Behavior {
case object Append extends Behavior
case object Remove extends Behavior
}
trait Service[F[_]] {
def decide: F[Behavior]
}
Второй:
trait Behavior[F[_]] {
def append: F[Unit]
def remove: F[Unit]
}
trait Service[F[_]] {
def decide: F[Unit]
}
class SomeServiceImpl[F[_]: Behavior] extends Service { ... }
Ну я бы не сказал, что одно строго преобладает над другим
варианты неравнозначны. первый подразумевает только декларацию поведения, а второй и самое поведение тоже. я бы предпочел первый потому что, предствим что в моем случае, я ничего не делаю после выбора поведения, а просто сохраняю его в БД.
Обсуждают сегодня