20

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

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

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

有没有办法让 RubyMine 了解本地和/或实例变量的类型?

4

3 回答 3

19

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

“局部变量可以带有或不带有变量名的注释:”

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

“还支持多重分配:”

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

“但是在多重赋值的情况下,没有 var name 的表单将不起作用(这是有争议的,但我倾向于它可能会导致一些错误)

也可以注释块参数:"

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

“需要注意的是,类型注释要放在 do 或 { 和块参数列表之前,以帮助避免可能的歧义。对于单行代码,它看起来很麻烦,但我不确定它们是否会很重注释了。无论如何,任何建议都非常欢迎。

于 2014-08-22T21:36:54.393 回答
5

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

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

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

因为有了固定装置,我确信 users(:first) 将返回对象,并且由于 Use.new - IDE 认为它应该是 User 实例。

于 2013-04-07T16:48:23.387 回答
4

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

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

更新

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

于 2012-11-24T09:13:07.987 回答