RubyMine 中代码完成的断言类型
Assert type for code completion in RubyMine
Ruby 不是一种静态类型的语言,因此代码完成引擎不可能确切地知道任何函数将return.
不过,有时候程序员是知道的。采取下面的代码,它使用元编程来 'confuse' 代码完成:
class Example
define_method :foo do
2 + 2
end
def bar
foo_result = foo
end
end
静态分析器不知道 foo
存在,因此无法为其提供代码完成。尽管 foo
永远是 Integer
并且我们知道这一点,但我只获得 BasicObject
.
的代码完成
有没有办法告诉代码完成引擎我知道什么类型,以便我获得更好的完成结果,而解释器会简单地忽略它?
事实证明,这 部分 可以使用 "Annotations" 的评论形式,记录在:https://www.jetbrains.com/help/ruby/using-annotations.html
您可以像这样向不明确的方法或变量添加类型:
# @return [String]
def mystery_method
# @type [Integer]
foo = nil
end
虽然您似乎无法使用这种方法创建全新的方法,例如元编程驱动的方法。
Ruby 不是一种静态类型的语言,因此代码完成引擎不可能确切地知道任何函数将return.
不过,有时候程序员是知道的。采取下面的代码,它使用元编程来 'confuse' 代码完成:
class Example
define_method :foo do
2 + 2
end
def bar
foo_result = foo
end
end
静态分析器不知道 foo
存在,因此无法为其提供代码完成。尽管 foo
永远是 Integer
并且我们知道这一点,但我只获得 BasicObject
.
有没有办法告诉代码完成引擎我知道什么类型,以便我获得更好的完成结果,而解释器会简单地忽略它?
事实证明,这 部分 可以使用 "Annotations" 的评论形式,记录在:https://www.jetbrains.com/help/ruby/using-annotations.html
您可以像这样向不明确的方法或变量添加类型:
# @return [String]
def mystery_method
# @type [Integer]
foo = nil
end
虽然您似乎无法使用这种方法创建全新的方法,例如元编程驱动的方法。