您好紅寶石大家好! 我剛剛跨過一個奇怪的語法排在方法調用:紅寶石等號登錄方法調用
Foo.bar 'first_arg', more1='other', more2='another'
但是當我測試它'other'
總是被分配到第二個參數,別提等號之前的單詞。這是什麼?爲什麼這是紅寶石?我熟悉ruby 2.0的關鍵參數,但這似乎與此無關。
您好紅寶石大家好! 我剛剛跨過一個奇怪的語法排在方法調用:紅寶石等號登錄方法調用
Foo.bar 'first_arg', more1='other', more2='another'
但是當我測試它'other'
總是被分配到第二個參數,別提等號之前的單詞。這是什麼?爲什麼這是紅寶石?我熟悉ruby 2.0的關鍵參數,但這似乎與此無關。
'other'
被分配給變量more1
,結果表達式始終爲'other'
,因此值將傳遞給bar
方法。那爲什麼要這樣呢?那麼,那個電話之後可能會使用more1
和more2
。我不喜歡它,但就是這樣。
這與關鍵參數無關。
這只是將變量分配和傳遞給方法的快捷方式。
Foo.bar 'first_arg', more1='other', more2='another'
可以重寫
more1='other'
more2='another'
Foo.bar('first_arg', more1, more2)
事實上,無關kwargs。 –
_「可以重寫」_ - 可以並且應該重寫。 – Stefan
@Stefan我在這裏看到一個戰鬥rubocop的「方法身體太長」警察的蹤跡:) – mudasobwa