Ruby—如何在eclipse中获得类似java的方法建议

Ruby—如何在eclipse中获得类似java的方法建议,ruby,selenium,webdriver,Ruby,Selenium,Webdriver,就像我们打字时的EclipseJava一样。显示所有可用的方法和变量。Ruby eclipse外部库方法中可能出现的相同情况能否在静态类型语言(如Java)中使用固定类型的值,编辑器可以通过查看代码来确定。像Ruby这样的动态类型语言中的值几乎可以是任何东西。从一个非常粗略的角度来看,Ruby就像只对所有变量、参数和返回类型使用对象类型,然后通过调用所有方法 这就是为什么像autocomplete、call Herearchy和automatic refactoring这样奇特的Eclipse特

就像我们打字时的EclipseJava一样。显示所有可用的方法和变量。Ruby eclipse外部库方法中可能出现的相同情况能否在静态类型语言(如Java)中使用固定类型的值,编辑器可以通过查看代码来确定。像Ruby这样的动态类型语言中的值几乎可以是任何东西。从一个非常粗略的角度来看,Ruby就像只对所有变量、参数和返回类型使用对象类型,然后通过调用所有方法

这就是为什么像autocomplete、call Herearchy和automatic refactoring这样奇特的Eclipse特性不能与反射一起工作的原因,也是为什么Eclipse通常不为动态语言提供它们,或者以更有限的方式提供它们的原因。您可以使用许多聪明的启发式方法让它们在某些时候工作,但是它们比静态语言的分析更容易中断,并且比对静态语言进行相同分析的等效工具要复杂得多

Java也只是比Ruby更古老、使用更频繁,所以在Java代码的静态分析工具上投入了更多的精力


Ruby也是一种特别难做这类事情的语言,即使与其他一些动态语言相比也是如此,因为它有一些技巧,比如missing_方法和对missing的响应?方法,这些方法允许在调用时确定对象知道如何响应的方法。我对Python的熟悉程度不如对Ruby的熟悉,但我认为它不允许这样的事情,因此它可能比Ruby更容易自动完成。另一方面,Ruby的工作方式允许一些非常有趣的动态委托

所有那些你声称不适用于动态语言的奇特特性都是在IDE中为动态语言发明的。毕竟,Eclipse最初是作为Smalltalk的VisualAge的Java端口出现的,如果它的特性已经存在的话,大多数情况下都是这样。静态语言的IDE仍然落后于现代Smalltalk IDE。它对Ruby不起作用的原因是没有人投资让它起作用。Smalltalk和JavaIDE已经花费了数百万美元,这就是Smalltalk和JavaIDE非常好的原因。Haskell拥有比Java更多的类型信息,但是它的IDE功能要弱很多。为什么?因为IBM、微软、甲骨文、JetBrains、Embarcadero都不投资于此,而不是因为Haskell不知何故缺少令人可笑的静态类型信息。Haskell甚至没有子类型!我的观点是,对动态语言进行静态分析要困难得多,而且可能的范围要小得多。我并不是说动态语言不好,我喜欢Ruby,只是当涉及到IDE中的实时静态分析功能时,需要付出更多的努力才能获得更小的回报。Java是一种使用更频繁、更古老的语言,这当然也是一个因素。这不是一个编程问题。这是您应该在Eclipse站点上调查或在他们的支持论坛上询问的问题。