Как удалить предупреждение: `* 'интерпретируется как префикс аргумента" из следующего кода?Ruby: Как я могу убить предупреждение: `* 'интерпретируется как префикс аргумента"?
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
И это проблема, описанная в Why does white-space affect ruby function calls?, и явно не способ исправить предупреждение, которое я пытаюсь исправить.
Мой рубин версия:
$ ruby --version
ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]
@AlexGolubenko, этот вопрос касается предупреждения префикса аргумента, а не пробела между именем функции и скобкой. –