入力配列に問題があり、CodeWarsでRubyチャレンジを試みました。 関数likees :: [String] - > Stringを実装します。これは、入力配列を取る必要があり、アイテムを好む人の名前を含みます。例に示すように、それは表示テキストを返す必要があります。[]に対しては未定義のメソッドsplit:Array Rubyコードワード "誰が好きですか?" Kata
likes [] // must be "no one likes this"
likes ["Peter"] // must be "Peter likes this"
likes ["Jacob", "Alex"] // must be "Jacob and Alex like this"
likes ["Max", "John", "Mark"] // must be "Max, John and Mark like this"
likes ["Alex", "Jacob", "Mark", "Max"] // must be "Alex, Jacob and 2 others like this"
私のtry-コードは次のとおりです。
def likes(names)
arr = Array.[](names.split(/\W+/))
if arr.size == 0
var = "no one likes this"
return var
elsif arr.size == 1
return arr[0]+ " likes this "
elsif arr.size == 2
return arr[0] + "and #{arr[1]} likes this "
elsif arr.size == 3
return " #{arr[0]}, #{arr[1]} and #{arr[2]} likes this "
elsif arr.size >3
return "#{arr[0]}, #{arr[1]} and #{arr.size-1} likes this "
end
end
そしてそれはリターンをコンパイルするものです:
`likes': undefined method `split' for []:Array (NoMethodError)
from `block in
'
from `block in describe'
from `measure'
from `describe'
from `
'
アレイのための 'split'と呼ばれる方法はありません。 – vgoff
コメントを@vgoffで展開するには:すでにメソッドに配列を渡しています。 'names'が名前のリストで構成された文字列だった場合、'#split'を使って配列に分割する必要があります。しかし、 'names'は配列なので、'#split'メソッドを含むコード行を削除してメソッド全体で 'arr'を' names'に置き換えることができます。 – moveson
Rubyの行末コメントは '#'で始まります。 '//'はサポートされていません。 –