在RubyMine中,我可以写

# @param [Array<MyClass>] things
def foo(things)
end

和RubyMine将为things.first.*自动完成MyClass方法。但是,当我遍历每个对象时,例如:
# @param [Array<MyClass>] things
def foo(things)
    things.each { |t| t.* }
end

RubyMine丢失了类型推断。我知道我可以添加注释来指定块参数类型,但是循环遍历某种类型的对象无论如何应该只产生该类型的参数。

有什么方法可以为RubyMine编写自定义规则,以便.each.map和其他迭代器假定具有其调用的变量类型?

最佳答案

根据我的研究,您似乎可以这样注释:

# @param [Array<MyClass>] things
def foo(things)
  things.each {
    # @type [MyClass] t
    |t|
    t.*
  }
end

资料来源:https://youtrack.jetbrains.com/issue/RUBY-9142#comment=27-787975

关于ruby-on-rails - RubyMine-自动检测.each,.map和其他迭代器类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39079012/

10-14 03:10