Как устранить ошибку Rubocop 'Favor `format` над` String #% `' - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь сгенерировать MAC-адрес, используя следующий код, но robocop выдает предупреждение

mac_address = format((1..6).map { '%0.2X' % rand(256) } .join(':'))

Следующее предупреждение, пожалуйста, предложите мне решить эту проблему

Favor `format` over `String#%`. (convention:Style/FormatString) 

Ответы [ 2 ]

3 голосов
/ 14 июня 2019

Просто изменить

mac_address = format((1..6).map { '%0.2X' % rand(256) } .join(':'))

до

mac_address = (1..6).map { format('%0.2X', rand(256)) } .join(':')
0 голосов
/ 14 июня 2019

Пример кода в вашем вопросе не использует format для чего-либо:

format((1..6).map { '%0.2X' % rand(256) } .join(':'))

format вызывается с выводом:

(1..6).map { '%0.2X' % rand(256) } .join(':')
=> "AB:CD:EF:01:02:03"

то же самое, что делать что-то вроде:

format("AB:CD:EF:01:02:03")

, который по сути ничего не делает для строки.

Просто измените его на:

(1..6).map { '%0.2X' % rand(256) } .join(':')

Или:

format("%02X:%02X:%02X:%02X:%02X:%02X", *(1..6).map { rand(256) })

Или:

format((['%02X'] * 6).join(':'), *(1..6).map { rand(256) })

Вы получаете сообщение об ошибке, потому что смешиваете format и % (хотя format ничего не делает).Рубокоп, вероятно, хочет, чтобы вы использовали один или другой, а не оба.

...