RubyMine - 自动检测.each,.map和其他迭代器类型

时间:2016-08-22 12:00:37

标签: ruby-on-rails ruby rubymine

在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和其他迭代器具有调用它的变量类型?

1 个答案:

答案 0 :(得分:1)

根据我的研究,看起来你可以像这样注释:

# @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