【发布时间】:2019-12-02 15:25:35
【问题描述】:
在 Dagger 2 中,我们在编译时生成了代码。 根据Koin library website 的说法,Koin 不做任何代码生成,是一个“DSL、轻量级容器和实用 API”。
After reading Martin Fowlers Blog regarding DSL, 在我看来,DSL 可以生成为代码,或在运行时进行解释。
来自马丁斯的文章:
DSL 可以通过解释或代码生成来实现。解释(读入 DSL 脚本并在运行时执行)通常是最简单的,但代码生成有时是必不可少的。通常生成的代码本身就是一种高级语言,例如 Java 或 C。
但是如果 Koin 不生成任何代码,Koin 会在运行时解释吗? 这是否意味着 Koin 带有某种解析器?如我所见,没有解析器,那么是不是说 Kotlin 本身就是解析器?
谢谢
【问题讨论】:
-
Koin 中的 DSL 让 Kotlin 更容易编写。
-
@Froyo 抱歉,但这对我没有多大帮助。你能详细说明一下吗?关注 Martin Fowler 的博客martinfowler.com/bliki/DomainSpecificLanguage.html 他说 DSL 可以转换为代码(代码生成)。或者它可以在运行时进行解释。如果我理解正确,这意味着 Koin DSL 只是 Kotlin 以不同的方式编写,在运行时解释。这也意味着 Koin 带有某种解析器。我做对了吗?
标签: android kotlin dependency-injection dagger-2 koin