2009-08-28 74 views
6

Ruby中很常见的方法是接收参数散列而不是将参数传递给方法。哈希与多个参数?

我的问题是 - 什么时候你的方法使用参数,什么时候使用参数散列?

说方法有多个或两个参数时使用参数散列是一个好习惯吗?

回答

0

一个显而易见的用例是,当您重写子类中的某个方法时,您应该在调用父方法的参数时使用散列参数。

4

只要它们表示语义上属于一组的选项,就使用参数散列。任何其他参数都是直接(通常是必需的)参数的函数,我一个接一个地传递。

+1

+1 - 应该不需要参数散列中的任何内容。可选参数可以用默认值命名,但我倾向于将它们传递给哈希,并在需要时在方法体中设置默认值。 – 2009-08-28 16:56:33

1

如许多rails的方法中所看到的,您可能希望在有很多可选参数或者想要接受任意参数时使用散列。

0

在另一方面,这不仅关系到Ruby,但所有的语言:

在API的这是在不断变化,有时可作为一个单一的参数对象的部分或全部参数申报的功能(在Ruby中,这些可以是散列,C结构等),以便在未来版本中接受的参数集发生更改时维持API稳定性。然而,明显的缺点是可读性急剧下降,除非真的需要,否则我绝对不会使用这种“模式”。

1

如果您有超过2个论据。你应该开始考虑使用散列。 这是在干净的代码中清楚解释的良好做法link text