Как я могу удалить "предупреждение: `*' интерпретируется как префикс аргумента" из следующего кода?
hash = {"a" => 1,
"b" => 2,
"s" => 3,}
if "string".start_with? *hash.keys then
puts "ok"
else
puts "ng"
end
Когда я запускаю код выше, я получаю:
$ ruby -w /tmp/a.rb
/tmp/a.rb:5: warning: `*' interpreted as argument prefix
ok
Как лучше всего исправить это предупреждение?
Я попытался поставить скобки вокруг hash
следующим образом:
hash = {"a" => 1,
"b" => 2,
"s" => 3,}
if "string".start_with? (*hash.keys) then
puts "ok"
else
puts "ng"
end
тогда вы получите:
$ ruby -w /tmp/a.rb
/tmp/a.rb:5: syntax error, unexpected *
if "string".start_with? (*hash.keys) then
^
/tmp/a.rb:5: syntax error, unexpected ')', expecting '='
if "string".start_with? (*hash.keys) then
^
/tmp/a.rb:7: syntax error, unexpected keyword_else, expecting end-of-input
И это проблема, описанная в разделе Почему пробелы влияют на вызовы рубиновых функций?, и явно не способ исправить предупреждение, которое я пытаюсь исправить.
Моя рубиновая версия:
$ ruby --version
ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]
why does white space affect ruby function calls
гуглить, потому что это будет означать, что они уже знают, что вызывает предупреждение. Я думаю, что дубликат тега должен быть удален. - person Obromios   schedule 31.10.2019