作为一名新手Kotlin程序员,我想知道,是否有一些好的做法甚至是语言结构来声明函数中的前置条件。
在Java中,我一直在使用Guava的Preconditions检查实用程序:
https://github.com/google/guava/wiki/PreconditionsExplained
经过进一步调查后,我遇到了require函数:
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/require.html
这通常用于检查函数的前置条件吗?
答案 0 :(得分:7)
当然。您可以在Preconditions.kt中找到所有前提条件。除了require功能外,还有requireNotNull,check& checkNotNull功能。
由于文档在Kotlin中描述得很差,但您可以在jdk中进一步查看Objects#requireNonNull文档。
检查指定的对象引用是否为null。此方法主要用于在方法和构造函数中执行参数验证。
答案 1 :(得分:2)
我使用stdlib中的assert()
和require()
。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/assert.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/require.html
答案 2 :(得分:0)
实际上,'require'似乎不会被继承 - 也就是说,如果子类重写了具有'require'语句的函数,则不会强制执行父函数中的'require'。真正的先决条件也适用于重新定义继承函数的情况,因此(IMO)'require'并不真正提供完整的前置条件检查功能。
(我说“看起来”是因为,作为kotlin的新手,我通过使用继承的简单实验学到了这一点 - 而且我可能错了 - 例如,编译器中存在导致错误行为的错误,或者我在编译/设置方面做错了。但我不认为这种可能性是可能的。)