使用点不从另一个方法调用的方法的Ruby名称

时间:2016-07-21 16:28:19

标签: ruby

我正在使用TDD(测试驱动开发)学习Ruby。在Rspec代码中,我经常看到:

it "return the sum of two different arugments" do
      calc = Calculator.new
      expect(calc.add(1,2)).to eq(3)
 end

通常,在其他语言中,最后一个命令通常会写为eq (expect(calc(1,2)), 3)expect(calc.add(1,2)).eq(3)

但是在示例中,没有任何内容连接第一个短语expect(calc.add(1,2))和第二个短语eq(3)

所以在Ruby中,这个语法的名称是什么?

2 个答案:

答案 0 :(得分:2)

只是可以省略参数周围的一对括号。

expect(calc.add(1, 2)).to eq(3)

是语法糖形式:

expect(calc.add(1, 2)).to(eq(3))

也就是说,eq(3)是方法to的参数。

根据@DigitalRoss,它似乎被称为诗歌模式

答案 1 :(得分:1)

Ruby赞成简洁和快捷方式,也称为糖。其中一个是省略括号。

你也可以省略其他需要它们的(不仅仅是expect),例如你也可以这样做:

expect(calc.add 1,2).to eq 1

而不是更长的

expect(calc.add(1, 2)).to(eq(3))