ruby中的方法类

时间:2014-01-09 20:08:09

标签: ruby

在进一步研究Ruby时,我注意到有些方法似乎真正赋予语言权力,而其他方法只是语法糖。

糖的例子:.split,.strip,即任何只是简单地使用数据结构做一个简单任务的方法。

电源方法示例:call,send,responds_to?,method_missing等。

似乎你理解那些“权力方法”,你真的知道这种语言。

对三件事感到好奇:

  1. 是否每个人都有这样的区别,无论是在书籍/博客文章等?
  2. 你个人有这样的区别吗?
  3. 如果你觉得我所说的是正确的,我应该知道哪些“权力方法”并使用得更好?
  4. 谢谢(希望这个问题不会被关闭!)

1 个答案:

答案 0 :(得分:2)

这些不是真正的“权力方法”,而只是工具箱中的另一个工具,即Ruby库。

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

splitstripchomp等方法只是数据转换方法。它们的主要功能是将一个东西转换成另一个东西,可选地就地。

我认为这些方法之间并没有区别,它们都非常有用,但它们确实有其特殊用途。然而,就Ruby而言,所有方法都是相同的,它们没有等级或内在的重要性。

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