Kotlin:在界面中指定输入约束

调解人

可以说我有以下界面:

interface MathThing {

    fun mathFunction(x : Int)
}

假设我要对此函数施加的约束是x不能为负。

我如何确定每次在MathThing类型的对象上不满足此(或任何其他任意)条件时,都会引发(自定义)异常?

Tenfour04

一种方法是对函数参数使用包装器类。您可以创建扩展函数,以便将值传递给该函数要容易一些。

data class NonNegative(val value: Int) {
    init{ if (value < 0) throw IllegalArgumentException("Input must not be negative.") }
}

fun Int.nonNegative() = NonNegative(this)

interface MathThing {
    fun mathFunction(x : NonNegative)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在PostgreSQL中指定UNIQUE约束

在CPLEX中指定约束的意义

Matlab:如何在matlabFunction中指定输入?

如何使用Eclipse Papyrus在活动图中指定OCL约束?

如何在函数参数中指定通用键约束

Haskell:在类型系统中指定列表的等长约束

在Rails Gemfile中指定多个gem约束的语法是什么?

如何在 CP-SAT 中指定条件约束

无法在闪亮的仪表板中指定输入数据集

在UIMA Ruta Workbench中指定输入文件编码

在表单输入中指定逗号后的最大长度

如何在Kotlin中指定递归泛型参数?

为什么不能在Kotlin中指定var / val循环?

如何让 IntelliJ 强制我在 Kotlin 中指定类型?

IntelliJ IDEA:如何在Kotlin中指定主类?

从属性检查器中指定约束属性时,约束布局将忽略这些属性

在cvxpy中指定复杂约束会产生严格的不等式错误

如何在代码优先的Entity Framework流利API中指定多列UNIQUE约束

如何在Docker群约束中指定经理领导者

如何在Standard-ML中的数据类型中指定类型约束?

如何在两个谓词中指定类型约束以具有相同的参数?

对于C#,是否可以在泛型类的实例声明中指定类型约束?

如何在SQL Server中指定类似线性编程的约束(即维属性的最大行数)?

在cvxpy中指定约束时违反了DCP要求,也许需要重新考虑问题的整体表述

在JSON中指定通配符?

在awk中指定行?

在Flask中指定路线

在@WebMvcTest中指定@SpringBootApplication

在MySQL中指定了GROUP BY