我可以告诉或暗示RubyMine本地或实例变量的类型是什么?

时间:2012-05-26 19:54:38

标签: ruby rubymine

我正在尝试利用RubyMine快速文档和代码完成。我很高兴地发现它整合了YARD风格的评论:

# @param [Numeric] width
# @param [Array<String>] values
# @return [Widget]      
def foo(width, values)

...这些注释适用于参数,返回类型,甚至是类型集合。但是我找不到任何类似的标签或者局部变量,我很确定Ruby中没有类型转换(我是否提到我是新手?)

有没有办法将RubyMine引入本地和/或实例变量的类型?

3 个答案:

答案 0 :(得分:14)

根据Matt Connolly引用的问题跟踪器上发布的最新评论,这似乎即将发布http://youtrack.jetbrains.com/issue/RUBY-9142#comment=27-787975

&#34;局部变量可以使用或不使用变量名进行注释:&#34;

# @type [String]
my_var = magic_method

# @type my_var [String]
my_var = magic_method

# @type [String] my_var
my_var = magic_method

# @type [String] my_var And some documentation is allowed
my_var = magic_method

&#34;还支持多项作业:&#34;

# @type my_var [String] The first part
# @type other_var [Range] The second part
my_var, other_var = magic_method

&#34;但是在多项任务的情况下,没有var名称的表格将不起作用(这是有争议的,但我倾向于它可能会导致一些错误)

也可以注释块参数:&#34;

method_with_block do
  # @type [String] param1
  # @type [Range] param2
  | param1, param2 |
  # some code...
end

&#34;需要注意的是,类型注释将放在do或{和块参数列表之后,以帮助避免可能的歧义。在单行的情况下,它看起来很麻烦,但我不确定它们是否需要大量注释。无论如何,任何建议都是非常受欢迎的。&#34;

答案 1 :(得分:5)

对于这个特定问题,这不是100%的答案,但可以指出其他有用的技巧。

在测试中,我这样做是为了欺骗RubyMine(5.0.2)

user = users(:normal) || User.new

因为使用fixtures我确信用户(:first)将返回该对象,并且由于Use.new - IDE认为它应该是User实例。

答案 2 :(得分:4)

似乎没有。我建议在问题跟踪器中查找现有功能请求,并添加让您的声音在那里听到。例如:

http://youtrack.jetbrains.com/issue/RUBY-9142

<强>更新

此功能现在随RubyMine 7.0(Tsubaki)EAP(138.1968)及更高版本(但请注意Rubymine 7.0目前处于EAP(即测试版)),并且总有可能无法进入最终发行版。)