2016-11-09 43 views
0

您好紅寶石大家好! 我剛剛跨過一個奇怪的語法排在方法調用:紅寶石等號登錄方法調用

Foo.bar 'first_arg', more1='other', more2='another' 

但是當我測試它'other'總是被分配到第二個參數,別提等號之前的單詞。這是什麼?爲什麼這是紅寶石?我熟悉ruby 2.0的關鍵參數,但這似乎與此無關。

回答

0

'other'被分配給變量more1,結果表達式始終爲'other',因此值將傳遞給bar方法。那爲什麼要這樣呢?那麼,那個電話之後可能會使用more1more2。我不喜歡它,但就是這樣。

3

這與關鍵參數無關。

這只是將變量分配和傳遞給方法的快捷方式。

Foo.bar 'first_arg', more1='other', more2='another' 

可以重寫

more1='other' 
more2='another' 
Foo.bar('first_arg', more1, more2) 
+0

事實上,無關kwargs。 –

+2

_「可以重寫」_ - 可以並且應該重寫。 – Stefan

+0

@Stefan我在這裏看到一個戰鬥rubocop的「方法身體太長」警察的蹤跡:) – mudasobwa