【发布时间】:2016-01-27 13:03:32
【问题描述】:
当我们键入“.”时,就像 eclipse java显示的所有可用方法和变量都可以在 Ruby eclipse 中实现(外部库方法)
【问题讨论】:
-
这不是编程问题。这是您应该在 Eclipse 网站上调查或在他们的支持论坛上询问的内容。
当我们键入“.”时,就像 eclipse java显示的所有可用方法和变量都可以在 Ruby eclipse 中实现(外部库方法)
【问题讨论】:
像 Java 这样的静态类型语言中的值有一个固定的类型,编辑器可以通过查看代码来确定它。像 Ruby 这样的动态类型语言中的值几乎可以是任何东西。粗略地认为 Ruby 就像只对所有变量、参数和返回类型使用 Object 类型,然后通过 reflection 调用所有方法。
这就是为什么像自动完成、调用层次结构和自动重构等花哨的 Eclipse 功能不能与反射一起使用的原因,也是 Eclipse 通常不为动态语言提供它们的原因,或者以更有限的方式提供这些功能的原因。您可以使用许多巧妙的启发式方法让它们在某些时候工作,但它们比静态语言的分析更容易崩溃,并且比对静态语言进行相同分析的等效工具实现起来要复杂得多。
Java 也比 Ruby 更古老且使用更频繁,因此在工具上投入了更多精力来对 Java 代码进行静态分析。
即使与其他一些动态语言相比,Ruby 也是一种特别难以完成此类事情的语言,因为它具有诸如 missing_method 和 responds_to_missing? 方法之类的技巧,这些方法允许对象知道如何响应的方法在拨打电话时确定。我对 Python 的熟悉不如对 Ruby 的熟悉,但我认为它不允许这种事情,所以它可能比 Ruby 更容易自动完成。 (另一方面,Ruby 的处理方式允许一些非常有趣的动态委托)
【讨论】: