Kotlin中的先决条件功能-良好实践
作为一个新手Kotlin程序员,我想知道是否有一些好的实践,甚至是语言构造来声明函数中的前置条件 在Java中,我一直在使用Guava的前提条件检查实用程序: 经过进一步调查,我发现了require函数:Kotlin中的先决条件功能-良好实践,kotlin,preconditions,Kotlin,Preconditions,作为一个新手Kotlin程序员,我想知道是否有一些好的实践,甚至是语言构造来声明函数中的前置条件 在Java中,我一直在使用Guava的前提条件检查实用程序: 经过进一步调查,我发现了require函数: 这通常用于检查函数的前提条件吗?当然。您可以在中找到所有的前提条件。除函数外,还有、&函数 因为文档在Kotlin中对它的描述很差,但是您可以进一步在jdk中看到文档 检查指定的对象引用是否为空。此方法主要用于在方法和构造函数中进行参数验证 我使用stdlib中的assert()和requ
这通常用于检查函数的前提条件吗?当然。您可以在中找到所有的前提条件。除函数外,还有、&函数 因为文档在Kotlin中对它的描述很差,但是您可以进一步在jdk中看到文档 检查指定的对象引用是否为空。此方法主要用于在方法和构造函数中进行参数验证 我使用stdlib中的
assert()
和require()
实际上,“require”似乎没有被继承-也就是说,如果子类重写了具有“require”语句的函数,则父函数中的“require”不会被强制执行。真正的前提条件也适用于继承函数的重新定义,因此(IMO)“require”不能真正提供完整的前提条件检查功能
(我之所以说“出现”,是因为我是kotlin的新手,我通过使用继承的一个简单实验了解到了这一点——可能是我错了——例如,编译器中有一个错误导致了错误的行为,或者我在编译/设置中做了一些错误的事情。不过,我认为这种可能性不大。)Hi,assert是为调试而设计的,而不是为先决条件。坦白说,我看不出有什么区别。我更喜欢<代码>断言< /Cord>,因为我也可以在方法的中间使用它,但最终的选择取决于我想得到的异常。默认情况下,Java AsvestToad是禁用的。这意味着
assert
不保证始终启用。因此,您将使api变得脆弱和关键。另一方面,您可以认为断言
已经存在于Kotlin中,为什么Kotlin引入了另一个要求
?这是为了编译安全、运行时安全吗?