bind<Type>() with
определяет Type
явно . Это важно, например, когда вы привязываете тип интерфейса к его реализации:
bind<Type>() with singleton { TypeImpl() }
Теперь рассмотрим, что вы привязываете очень простой тип, такой как объект данных конфигурации:
bind<Config>() with singleton { Config("my", "config", "values") }
Вы написали Config
дважды: один раз в определении привязки и один раз в самой привязке.
Введите bind() from
: он не определяет тип, но оставляет выбор связанный тип с самой привязкой. Связанный тип определяется неявно . Например, вы можете написать привязку Config
следующим образом:
bind() from singleton { Config("my", "config", "values") }
Обратите внимание, что привязка типа к себе (для чего и нужен bind() from
) часто является плохой идеей (это противоречит Io C pattern) и должен использоваться только для очень простых типов, таких как классы данных.