【发布时间】:2020-10-13 01:10:42
【问题描述】:
考虑这个非扩展函数:
fun checkArguments(expression: Boolean) {
if (!expression) {
throw IllegalArgumentException()
}
}
当我在kotlin和java中使用这个函数时,可以看到它的参数名:expression。
我也可以编写与扩展函数相同的功能:
fun Boolean.checkArguments() {
if (!this) {
throw IllegalArgumentException()
}
}
当我以这种方式将其编写为扩展函数时,调用它的布尔值的参数名称(函数中的 this 变量,也称为接收器)显示为 $this$checkArguments。如何为此参数添加 KDoc 文档注释?使用@param $this$checkArguments 似乎没有记录。
【问题讨论】:
-
“表达式”是正则函数版本中的参数。当你使它成为一个扩展函数时,没有参数。正如您的定义所示,参数成为接收器......您扩展的对象本身。您直接在没有参数的布尔值上调用
checkArguments。 -
IS NO 第一个参数。接收者是
this。这相当于您显示的标准函数版本中的参数,但两者是不同的东西。它们不是写同一件事的两种方式。它们是不同的东西。 -
我想告诉你的唯一另一件事是,该方法在 Java 中看起来像这样:
public static boolean checkArguments(Boolean receiver) { if (!receiver) { throw IllegalArgumentException() } }- 它位于一个类中,其名称取决于函数所在的文件。 -但你从来没有看到过,所以你不能“评论它”。 -
@Steve 实际上,可以在扩展函数的接收者上添加文档注释。我的回答描述了如何做到这一点。
标签: java kotlin extension-methods kdoc