Sorry für den schrecklichen Titel, das ist buchstäblich, was das Problem ist.Der Versuch, einen String in einer Funktion mit ein paar Pipes mutieren zurückgibt leere Array
mir eine Übung in einem Buch zu tun ich lerne was will mich:
Aus einer Liste von vielen Worten, nur die richtigen Worte finden, die mit „D“ beginnen, in Großbuchstaben die Worte, und sortiere sie nach dem kleinsten bis zum größten.
Dies ist, was ich bisher:
defmodule ReadFile do
def findD(contents) do
contents
|> String.split("\n")
|> Enum.filter(fn(word) -> String.starts_with?(word, "D") end)
|> Enum.map(fn(word) -> String.upcase(word) end)
|> Enum.sort(fn(el1, el2) -> String.length(el1) > String.length(el2) end)
end
end
Die Daten, die ich zu findD
ist vorbei bin (nur eine Kette von einem Bündel von Wörtern aus einer file.txt` lesen
"adult\n\naeroplane\n\nair\n\naircraft Carrier\n\nairforce\n\nairport\n\nalbum\n\nalphabet\n\napple\n\narm\n\narmy\n\nbaby\n\nbaby\n\nbackpack\n\nballoon\n\nbanana\n\nbank\n\nbarbecue\n\nbathroom\n\nbathtub\n\nbed\n\nbed\n\nbee\n\nbible\n\nbible\n\nbird\n\nbomb\n\nbook\n\nboss\n\nbottle\n\nbowl\n\nbox\n\nboy\n\nbrain\n\nbridge\n\nbutterfly\n\nbutton\n\ncappuccino\n\ncar\n\ncar-race\n\ncarpet\n\ncarrot\n\ncave\n\nchair\n\nchess Board\n\nchief\n\nchild\n\nchisel\n\nchocolates\n\nchurch\n\nchurch\n\ncircle\n\ncircus\n\ncircus\n\nclock\n\nclown\n\ncoffee\n\ncoffee-shop\n\ncomet\n\ncompact Disc\n\ncompass\n\ncomputer\n\ncrystal\n\ncup\n\ncycle\n\ndata Base\n\ndesk\n\ndiamond\n\ndress\n\ndrill\n\ndrink\n\ndrum\n\ndung\n\nears\n\nearth\n\negg\n\nelectricity\n\nelephant\n\neraser\n\nexplosive\n\neyes\n\nfamily\n\nfan\n\nfeather\n\nfestival\n\nfilm\n\nfinger\n\nfire\n\nfloodlight\n\nflower\n\nfoot\n\nfork\n\nfreeway\n\nfruit\n\nfungus\n\ngame\n\ngarden\n\ngas\n\ngate\n\ngemstone\n\ngirl\n\ngloves\n\ngod\n\ngrapes\n\nguitar\n\nhammer\n\nhat\n\nhieroglyph\n\nhighway\n\nhoroscope\n\nhorse\n\nhose\n\nice\n\nice-cream\n\ninsect\n\njet fighter\n\njunk\n\nkaleidoscope\n\nkitchen\n\nknife\n\nleather jacket\n\nleg\n\nlibrary\n\nliquid\n\nmagnet\n\nman\n\nmap\n\nmaze\n\nmeat\n\nmeteor\n\nmicroscope\n\nmilk\n\nmilkshake\n\nmist\n\nmoney $$$$\n\nmonster\n\nmosquito\n\nmouth\n\nnail\n\nnavy\n\nnecklace\n\nneedle\n\nonion\n\npaintBrush\n\npants\n\nparachute\n\npassport\n\npebble\n\npendulum\n\npepper\n\nperfume\n\npillow\n\nplane\n\nplanet\n\npocket\n\npost-office\n\npotato\n\nprinter\n\nprison\n\npyramid\n\nradar\n\nrainbow\n\nrecord\n\nrestaurant\n\nrifle\n\nring\n\nrobot\n\nrock\n\nrocket\n\nroof\n\nroom\n\nrope\n\nsaddle\n\nsalt\n\nsandpaper\n\nsandwich\n\nsatellite\n\nschool\n\nsex\n\nship\n\nshoes\n\nshop\n\nshower\n\nsignature\n\nskeleton\n\nslave\n\nsnail\n\nsoftware\n\nsolid\n\nspace Shuttle\n\nspectrum\n\nsphere\n\nspice\n\nspiral\n\nspoon\n\nsports-car\n\nspot Light\n\nsquare\n\nstaircase\n\nstar\n\nstomach\n\nsun\n\nsunglasses\n\nsurveyor\n\nswimming Pool\n\nsword\n\ntable\n\ntapestry\n\nteeth\n\ntelescope\n\ntelevision\n\ntennis racquet\n\nthermometer\n\ntiger\n\ntoilet\n\ntongue\n\ntorch\n\ntorpedo\n\ntrain\n\ntreadmill\n\ntriangle\n\ntunnel\n\ntypewriter\n\numbrella\n\nvacuum\n\nvampire\n\nvideotape\n\nvulture\n\nwater\n\nweapon\n\nweb\n\nwheelchair\n\nwindow\n\nwoman\n\nworm\n\nx-ray\n\n"
In iex
ich tue
{ :ok, fileContents } = File.read("sample.txt")
ReadFile.findD(fileContents)
Welche []
gibt
ich, warum nicht sicher bin, ich weiß auch nicht, wie man ein pipeline
debuggen Ich habe versucht, das Einfügen
|> IO.puts
nach jedem Anruf in der Rohrleitung, aber Das hat nur zu Fehlern geführt. Jede Hilfe wäre großartig, danke.
Verwenden Sie zum Debuggen 'IO.inspect' anstelle von' IO.puts'. 'IO.puts' dient zum Ausgeben von Strings, während' IO.inspect' zuerst 'Kernel.inspect' aufruft, um die gegebene Datenstruktur irgendwie als String darzustellen. –