如何解决Stringo%上的Rubocop错误'Favor`format`

时间:2019-06-14 11:10:41

标签: ruby rubocop

我正在尝试使用以下代码生成mac地址,但是robocop抛出警告

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

以下是警告,请提示我解决此问题

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

2 个答案:

答案 0 :(得分:3)

只是改变

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

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

答案 1 :(得分:0)

您问题中的代码示例不使用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无所事事),所以您收到错误消息。 Rubocop可能希望您使用其中一个,而不是两者都使用。