/ / Ako vytvoriť metódu na rozdelenie dvoch reťazcov do poľa? - rubín

Ako vytvoriť metódu na rozdelenie dvoch reťazcov do poľa? - rubín

Snažím sa vrátiť dve reťazce v poli do jednotlivých slov:

list = ["hello my name is ryan", "hole me llamo"]
def splitter(inp)
inp.each.split(" ")
end

print splitter(list)

Toto vráti:

ruby splitter.rb
splitter.rb:4:in `splitter": undefined method `strsplit" for # <Enumerator: ["hello my name is ryan", "hole me llamo"]:each> (NoMethodError)
from splitter.rb:7:in `<main>"

Funguje to, ak nepoužívam .each a používať inp(0) alebo inp(1) ale vráti sa iba jeden reťazec.

Ako môžem dostať obe reťazce vrátené?

odpovede:

2 pre odpoveď č. 1

Tu je jedna, ktorú by ste mali urobiť:

def splitter(inp)
inp.flat_map(&:split)
end
splitter list
# => ["hello", "my", "name", "is", "ryan", "hole", "me", "llamo"]

Vo svojom kóde inp.each bol v skutočnosti metóda volania ako Array#each, ktoré bez a blok dáva Enumerator, a String#spilt existuje, ale neexistuje metóda, ako je Enumerator#split, preto NoMethod chyba vybuchne.

A ak chcete poľa slov pre každý jednotlivý reťazec, potom

def splitter(inp)
inp.map(&:split)
end
splitter list
# => [["hello", "my", "name", "is", "ryan"], ["hole", "me", "llamo"]]

0 pre odpoveď č. 2

Ak správne chápem otázku, je to len:

list = ["hello my name is ryan", "hole me llamo"]

list.join(" ").split
#=> ["hello", "my", "name", "is", "ryan", "hole", "me", "llamo"]