【问题标题】:How to use @link and @code in kotlin kDoc如何在 kotlin kDoc 中使用 @link 和 @code
【发布时间】:2017-12-25 00:13:15
【问题描述】:

我正在尝试记录一种方法并尝试使用@link@code,如JavaDoc

我知道在 kotlin 中有一个 kDoc,但我找不到它们,或者至少找不到类似的东西。

【问题讨论】:

  • 我使用的是/* 而不是/**...

标签: documentation kotlin kdoc


【解决方案1】:

@link@code 在 kDoc 中不存在,但可以很容易地被 Inline Markup 替换。

来自 KotlinDoc Linking to Elements

内联标记

对于内联标记,KDoc 使用常规的 Markdown 语法,扩展为 支持链接到代码中其他元素的简写语法。

链接到元素

链接到另一个元素(类、方法、属性或参数), 只需将其名称放在方括号中即可:

为此使用方法[foo]

如果你想指定一个自定义 链接标签,使用 Markdown 引用样式语法:

为此目的使用[this method][foo]。您也可以使用合格的 链接中的名称。请注意,与 JavaDoc 不同,限定名称总是 使用点字符分隔组件,甚至在方法之前 名称:

使用[kotlin.reflect.KClass.properties]枚举属性 班上。链接中的名称使用相同的规则解析,就好像 在记录的元素内使用了名称。特别是,这 意味着如果您已将名称导入当前文件,您 当您在 KDoc 评论中使用它时,不需要完全限定它。

请注意,KDoc 没有任何用于解决重载的语法 链接中的成员。由于 Kotlin 文档生成工具将 同一页面上所有函数重载的文档, 不需要识别特定的重载函数 工作链接。

【讨论】:

  • 对于其他努力解决非静态方法的人,你不能只做 [class.methodName] 你必须做 [full_package_location.methodName]
  • @hmac 是正确的,但是您也可以将方法名称添加到您的导入中。 IDE 不会为您提供智能感知选项来为您执行此操作,但它确实有效。
  • 如何应用于外部链接?
  • 我终于通过右键单击方法名称并选择第二个选项“复制参考”来获得正确的链接。我不确定它是否有区别,但我的方法是对象内部的 JVM 静态方法。
  • 这可能很重要:KDoc cmets 仅以 /** 开头并以 */ 结尾。
【解决方案2】:

Java 中的 {@link SomeClass} 映射到 Kotlin 中的 [SomeClass]

Java 中的 {@code true} 映射到 Kotlin 中的 `true`

【讨论】:

    【解决方案3】:

    您可以使用 java 编写代码并将类转换为 Kotlin。

    /**
     * @see <a href="http://somelink.com">link</a>
     */
    public class Some {
    }
    

    将转换为

    /**
     * @see [link](http://somelink.com)
     */
    class Some
    

    【讨论】:

    • 我在this gist 中尝试了这种方法。但是,链接没有格式化。
    • 抱歉回复晚了。看来您的文档格式错误。例如,您应该使用 /** docs here */ 来编写您的文档,而不仅仅是您可能在 ContentRepository 文件中使用的“//”。要检查一切是否按预期工作,您可以尝试我提供的示例。
    • 我已经更新了@Artur Dumchev 上方Gist 中的格式。您的示例使用 Java,而我的示例使用 Kotlin,这就是我不确定确切格式的原因。谢谢!
    【解决方案4】:

    answer that Artur 给出的提示总的来说是一个很好的提示,但结果是错误的。至少 IntelliJ IDEA 不会理解结果。使用[]() 的降价链接格式在主评论文本中很好,但对于@see 标记中的外部链接,不是。对于这些,您需要与 Java 中相同的语法:

    /**
     * Do something.
     *
     * @see <a href="https://stackoverflow.com/q/45195370/2621917">External links in kdoc</a>
     */
    

    【讨论】:

      【解决方案5】:

      要引用方法,请使用

      /**
       * When the configuration succeeds **[MyCallback.onConfigured]** is called.
       */
      class MyClass(myCallback: MyCallback) {
      

      使用变量/参数不起作用

      /**
       * When the configuration succeeds **[myCallback.onConfigured]** is called.
       */
      class MyClass(myCallback: MyCallback) {
      

      【讨论】:

        【解决方案6】:

        我在 Mac 上使用 Android Studio 3.5.2 时遇到了一些困难。这对我有用:

        /**
        * [Your fully-qualified class name.function name]
        */
        

        如果我不使用完全限定名称,Kdoc 会抱怨它是一个未解析的引用。我想不通的是如何实际使用链接本身。为此,您需要按住 COMMAND 键(在 Mac 上),然后链接将处于活动状态。

        【讨论】:

        • 如果您不想使用完全限定的类名,请导入这些类,您可以仅通过类名引用它们。
        【解决方案7】:

        至于@code,你应该使用Markdown syntax(因为KDoc是Markdown的扩展版本):

        要在 Markdown 中生成代码块,只需将块的每一行缩进至少 4 个空格或 1 个制表符。

        /**
         * Some code sample:
         * 
         *    Set<String> s;
         *    System.out.println(s);
         */
        class Scratch
        

        【讨论】:

          【解决方案8】:

          看来我们应该只使用不带任何特殊标签的 markdown 超链接,例如 @see@link

          /**
           * This is a doc.
           *
           * See [this](https://google.com)
           * And [this](https://stackoverflow.com)
           */
          fun myfun() {}
          

          此文档在 IDE 中以以下方式呈现:

          【讨论】:

            【解决方案9】:

            示例如何为课程留下链接:

            /**
             * [YourClass] Methods
             * */
            

            还有方法调用

            /**
             * [YourClass.someMothod] Methods
             * */
            

            真实例子:

             /**
             * [BaseActivity] Methods
             * */
            override fun initVars() {
                //Just Sample
            }
            
            /**
             * [MainContract.View] - Overrides
             * */
            override fun handleConnectionMassage(isShow: Boolean) {
                //Just Sample
            }
            

            【讨论】:

              猜你喜欢
              • 2019-03-27
              • 2015-04-16
              • 1970-01-01
              • 2019-07-01
              • 1970-01-01
              • 2018-08-02
              • 2021-04-10
              • 2019-04-04
              • 2019-04-24
              相关资源
              最近更新 更多