2014-01-09 42 views
1

在进一步研究Ruby时,我注意到有些方法确实给语言赋予了力量,而另一些方法只是语法上的糖。ruby​​中的方法类

糖的例子:.split,.strip,也就是任何方法,只是简单地用数据结构来做一些简单的任务。电力方法

例子:打电话,发,responds_to?method_missing的等

看来,如果你了解这些“电力法”你真的知道的语言等。

想了解三件事:

  1. 有没有人每作出这样的区分,无论是在一本书/博客文章等?
  2. 你个人做出这样的区分吗?
  3. 如果你觉得我说的是正确的,我应该知道什么“电源方法”并使用更好?

谢谢(希望这个问题没有得到休息!)

+0

这个问题最好的地方是 - https://www.ruby-forum.com/forum/ruby ..在这里,你可能有风险保持它打开.. :) –

+0

不知道你的意思是功率方法。如果您的意思是元方法,那么您可以参考一些关于ruby中的元编程的书籍 – texasbruce

回答

2

这些是不是真正的“电力法”,但在作为Ruby库工具箱只是一个工具。

callsend这样的方法用于低级操作,绕过了通常的Ruby语义层。在编写使用duck typing的通用代码时经常使用responds_to?,而method_missing是一种编写以动态方式响应各种方法的代码的方法。这就是Rails ActiveRecord如何自动处理像find_by_name_or_phone这样的方法调用。

split,stripchomp这样的方法只是数据转换方法。他们的主要功能是将一件东西转换为另一件东西,可选择就地。

我不认为这些方法之间有区别,它们都非常有用,但它们确实有其特定的用途。然而,就Ruby而言,所有方法都是平等的,对他们来说没有等级或固有的重要性。

你会很少使用一些方法,所以除非你做了很多Ruby,否则你不太可能需要它们。

+0

而'method_missing'是一种糟糕的风格。 – CodeGroover

+0

@CodeGroover我不同意。我认为这取决于你使用的是什么。我同意,使用它作为'find_by_name_or_phone'可能是不好的风格。 – Ajedi32

+0

感谢您的回答!不过,我应该澄清,我知道在语言本身中,所有这些都是平等的方法。我更多的意思是“使用权力方法表明你更好地理解语言”。有没有人做过这样的区分,如果有的话,他们列出了这些方法? –