在RubyMine中断言代码完成的类型

问题描述 投票:0回答:1

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

有没有办法告诉代码完成引擎我知道某种类型的类型,以便我获得更好的完成结果,解释器会忽略它?

ruby ide rubymine code-completion
1个回答
0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.