Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin中的先决条件功能-良好实践_Kotlin_Preconditions - Fatal编程技术网

Kotlin中的先决条件功能-良好实践

Kotlin中的先决条件功能-良好实践,kotlin,preconditions,Kotlin,Preconditions,作为一个新手Kotlin程序员,我想知道是否有一些好的实践,甚至是语言构造来声明函数中的前置条件 在Java中,我一直在使用Guava的前提条件检查实用程序: 经过进一步调查,我发现了require函数: 这通常用于检查函数的前提条件吗?当然。您可以在中找到所有的前提条件。除函数外,还有、&函数 因为文档在Kotlin中对它的描述很差,但是您可以进一步在jdk中看到文档 检查指定的对象引用是否为空。此方法主要用于在方法和构造函数中进行参数验证 我使用stdlib中的assert()和requ

作为一个新手Kotlin程序员,我想知道是否有一些好的实践,甚至是语言构造来声明函数中的前置条件

在Java中,我一直在使用Guava的前提条件检查实用程序:

经过进一步调查,我发现了require函数:


这通常用于检查函数的前提条件吗?

当然。您可以在中找到所有的前提条件。除函数外,还有、&函数

因为文档在Kotlin中对它的描述很差,但是您可以进一步在jdk中看到文档

检查指定的对象引用是否为空。此方法主要用于在方法和构造函数中进行参数验证

我使用stdlib中的
assert()
require()


实际上,“require”似乎没有被继承-也就是说,如果子类重写了具有“require”语句的函数,则父函数中的“require”不会被强制执行。真正的前提条件也适用于继承函数的重新定义,因此(IMO)“require”不能真正提供完整的前提条件检查功能


(我之所以说“出现”,是因为我是kotlin的新手,我通过使用继承的一个简单实验了解到了这一点——可能是我错了——例如,编译器中有一个错误导致了错误的行为,或者我在编译/设置中做了一些错误的事情。不过,我认为这种可能性不大。)

Hi,assert是为调试而设计的,而不是为先决条件。坦白说,我看不出有什么区别。我更喜欢<代码>断言< /Cord>,因为我也可以在方法的中间使用它,但最终的选择取决于我想得到的异常。默认情况下,Java AsvestToad是禁用的。这意味着
assert
不保证始终启用。因此,您将使api变得脆弱和关键。另一方面,您可以认为
断言
已经存在于Kotlin中,为什么Kotlin引入了另一个
要求
?这是为了编译安全、运行时安全吗?