kotlin 为什么扩展功能在另一个模块中不可见?

hs1rzwqc  于 2023-04-12  发布在  Kotlin
关注(0)|答案(2)|浏览(182)

我的Android项目有两个模块:

app
common

settings.gradle 中:

rootProject.name='My project'
include ':app'
include ':common'

In my build.

implementation project(':common')

在通用包中,我有 StringUtil.kt,下一个扩展函数是:

fun String.isEmailValid(): Boolean {
    return !TextUtils.isEmpty(this) && android.util.Patterns.EMAIL_ADDRESS.matcher(this).matches()
}

this类中,我可以像这样使用扩展函数:

val str = ""
str.isEmailValid()

但是在app模块中I有类

class RegistrationViewModel(application: Application) : AndroidViewModel(application) {

  fun doClickRegistration(email: String?, password: String?, retypePassword: String?) {
        val str = ""
        str.isEmailValid()
    }
}

但现在我得到编译错误:
未解析的引用:isEmailValid

axr492tv

axr492tv1#

如果没有指定任何可见性修饰符,则默认使用public,这意味着您的声明将在任何地方可见;(资料来源)
由于您没有向isEmailValid添加任何可见性修改器,因此它被视为public
请注意,必须导入扩展函数。

import com.your.package.path.isEmailValid
pxyaymoc

pxyaymoc2#

在您的应用程序build.gradle中添加以下内容:

implementation project(':common')

相关问题