【问题标题】:Ruby -How to get suggestions method like java in eclipseRuby - 如何在 Eclipse 中获取类似 java 的建议方法
【发布时间】:2016-01-27 13:03:32
【问题描述】:

当我们键入“.”时,就像 eclipse java显示的所有可用方法和变量都可以在 Ruby eclipse 中实现(外部库方法)

【问题讨论】:

  • 这不是编程问题。这是您应该在 Eclipse 网站上调查或在他们的支持论坛上询问的内容。

标签: ruby selenium webdriver


【解决方案1】:

像 Java 这样的静态类型语言中的值有一个固定的类型,编辑器可以通过查看代码来确定它。像 Ruby 这样的动态类型语言中的值几乎可以是任何东西。粗略地认为 Ruby 就像只对所有变量、参数和返回类型使用 Object 类型,然后通过 reflection 调用所有方法。

这就是为什么像自动完成、调用层次结构和自动重构等花哨的 Eclipse 功能不能与反射一起使用的原因,也是 Eclipse 通常不为动态语言提供它们的原因,或者以更有限的方式提供这些功能的原因。您可以使用许多巧妙的启发式方法让它们在某些时候工作,但它们比静态语言的分析更容易崩溃,并且比对静态语言进行相同分析的等效工具实现起来要复杂得多。

Java 也比 Ruby 更古老且使用更频繁,因此在工具上投入了更多精力来对 Java 代码进行静态分析。

即使与其他一些动态语言相比,Ruby 也是一种特别难以完成此类事情的语言,因为它具有诸如 missing_methodresponds_to_missing? 方法之类的技巧,这些方法允许对象知道如何响应的方法在拨打电话时确定。我对 Python 的熟悉不如对 Ruby 的熟悉,但我认为它不允许这种事情,所以它可能比 Ruby 更容易自动完成。 (另一方面,Ruby 的处理方式允许一些非常有趣的动态委托)

【讨论】:

  • 您声称不适用于动态语言的所有花哨的功能都是在用于动态语言的 IDE 中发明的。毕竟,Eclipse 最初是作为 Smalltalk 的 VisualAge 的 Java 端口,而且大多数功能已经存在于那里。静态语言的 IDE 仍然落后于现代 Smalltalk IDE。它对 Ruby 不起作用的原因是因为没有人投入资金来使它起作用。 Smalltalk 和 Java IDE 已经花费了数百万美元,这就是 Smalltalk 和 Java IDE 相当不错的原因。 Haskell 拥有比 Java 更多的类型信息,但它的 IDE 却很多……
  • … 没那么强大。为什么?因为 IBM、微软、甲骨文、JetBrains、Embarcadero 不投资它,并不是因为 Haskell 不知何故缺少静态类型信息(那太荒谬了)。 Haskell 甚至没有子类型!
  • 我的观点是动态语言的静态分析更难做,而且可能的范围要小得多。我并不是说动态语言不好,我喜欢 Ruby,只是当涉及到 IDE 中的实时静态分析功能时,它需要付出更多努力才能获得更小的回报。 Java 是一种使用更广泛且较旧的语言当然也是一个因素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-31
  • 2012-11-22
  • 2023-03-27
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多