【问题标题】:Assert type for code completion in RubyMineRubyMine 中代码完成的断言类型
【发布时间】:2018-09-06 18:27:50
【问题描述】:

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

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

class Example
  define_method :foo do
    2 + 2
  end

  def bar
    foo_result = foo
  end
end

静态分析器不知道foo 的存在,因此无法为其提供代码补全。尽管foo 将永远是Integer,我们知道,但我只获得BasicObject 的代码完成。

有没有办法告诉代码完成引擎我知道某事将是哪种类型,以便我得到更好的完成结果,而解释器会简单地忽略它?

【问题讨论】:

标签: ruby ide rubymine code-completion


【解决方案1】:

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

您可以像这样为不明确的方法或变量添加类型:

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

您似乎无法使用这种方法创建全新的方法,例如元编程驱动的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 2011-12-13
    • 2021-05-04
    • 2014-10-08
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    相关资源
    最近更新 更多