声明RubyMine中代码完成的类型

时间:2018-09-06 18:27:51

标签: ruby ide rubymine code-completion

Ruby不是静态类型的语言,因此代码完成引擎实际上不可能确切地知道 任何函数将返回什么类型。

但是,有时程序员知道。请看下面的代码,它使用元编程来“混淆”代码完成:

class Example
  define_method :foo do
    2 + 2
  end

  def bar
    foo_result = foo
  end
end

静态分析器不知道foo存在,因此无法为其提供代码完成。即使foo始终是Integer,我们知道,我只为BasicObject获得代码完成。

enter image description here

是否有一种方法可以告诉代码完成引擎我知道某种类型的东西,以便获得更好的完成结果,而解释器会忽略该结果?

1 个答案:

答案 0 :(得分:0)

使用注释形式的“注释”,可以部分部分实现,记录在https://www.jetbrains.com/help/ruby/using-annotations.html

您可以将类型添加到模糊方法或变量中,如下所示:

# @return [String]
def mystery_method
    # @type [Integer]
    foo = nil
end

尽管如此,您似乎无法使用此方法创建全新的方法,例如用于元编程驱动的方法。