Sunday 19 November 2017

Scala Parser Combinator Binære Alternativer


Det er min første gang ved å bruke scalas parser kombinatorer. Jeg har denne situasjonen der jeg har en liste over typer og de kan utvide andre typer, eller ikke. Hvis de gjør det, lager jeg bare et kart mellom typen og dens overordnetype. Hvis ikke, kartlegger jeg bare typen for objektet. (Typer er bare strengnavn) De er skrevet slik: I så fall vil de implicit være - objekt jeg prøvde å implementere det på følgende måte, men det er ikke kompilering. Det sier at det krever et alternativ ListString, String og det fant a, b. Det er også å si at det ikke kan finne verdi navnene i det første for forståelse, når det faktisk er angitt i saksemønsteret. Litt forvirret nå hva som egentlig skjer. Egentlig vil jeg bare at dette skal returnere en MapString, String. Hvis foreldetypen mangler, skal det være standard å protestere. Hvordan er det best å nærme seg dette Theres et par ting skjer her. Først forrang av og. betyr at i stedet for å kombinere (navn) som er en ParserListString med (- parenttype) som er en ParserOptionString du faktisk pakker inn hele greia. Og så får du en ParserOption ListString, String hvis det er fornuftig. Den enkleste løsningen er å bruke et ekstra sett med braketter. Så du vil begynne med: Deretter i mapping-funksjonen vil du få en ListString, OptionString med listen over navn og en valgfri foreldetype. Når det gjelder mønster som matcher, får du alltid navnet på foreldetypen der sistnevnte er en OptionString. Så i utgangspunktet er ditt andre mønster ugyldig. Så du kan enten gjøre dette: Eller du kan forenkle dette til: Dette er dokumentasjonen for Scala standardbiblioteket. Pakkestruktur Pakkepakken inneholder kjernetyper som Int. Flyte. Array eller alternativ som er tilgjengelig i alle Scala-kompileringsenheter uten eksplisitt kvalifisering eller import. Merkbare pakker inkluderer: Andre pakker finnes. Se den komplette listen til høyre. Ytterligere deler av standardbiblioteket sendes som separate biblioteker. Disse inkluderer: scala. reflect - Scalas refleksjon API (scala-reflect. jar) scala. xml - XML-parsing, manipulering og serialisering (scala-xml. jar) scala. swing - En praktisk wrapper rundt Javas GUI rammeverk kalt Swing (scala - swing. jar) scala. util. parsing - Parserkombinatorer. inkludert et eksempel på implementering av en JSON-parser (scala-parser-combinators. jar) Automatisk importidentifikatorer i scala-pakken og scala. Predef-objektet er som standard alltid tilgjengelig. Noen av disse identifikatorene er typegrupper som er gitt som snarveier til vanlige klasser. For eksempel er List et alias for scala. collection. immutable. List. Andre aliaser refererer til klasser som tilbys av den underliggende plattformen. For eksempel, på JVM er String et alias for java. lang. String. Core Scala-typer. Core Scala-typer. De er alltid tilgjengelige uten eksplisitt import. root pakkepakke root Dette er dokumentasjonen for Scala standardbiblioteket. Pakkestruktur Pakkepakken inneholder kjernetyper som Int. Flyte. Array eller alternativ som er tilgjengelig i alle Scala-kompileringsenheter uten eksplisitt kvalifisering eller import. Merkbare pakker inkluderer: Andre pakker finnes. Se den komplette listen til høyre. Ytterligere deler av standardbiblioteket sendes som separate biblioteker. Disse inkluderer: scala. reflect - Scalas refleksjon API (scala-reflect. jar) scala. xml - XML-parsing, manipulering og serialisering (scala-xml. jar) scala. swing - En praktisk wrapper rundt Javas GUI rammeverk kalt Swing (scala - swing. jar) scala. util. parsing - Parserkombinatorer. inkludert et eksempel på implementering av en JSON-parser (scala-parser-combinators. jar) Automatisk importidentifikatorer i scala-pakken og scala. Predef-objektet er som standard alltid tilgjengelig. Noen av disse identifikatorene er typegrupper som er gitt som snarveier til vanlige klasser. For eksempel er List et alias for scala. collection. immutable. List. Andre aliaser refererer til klasser som tilbys av den underliggende plattformen. For eksempel, på JVM er String et alias for java. lang. String. Setter opp akka i playframework, hvordan du konfigurerer og tar tak i ActorSystem Im prøver å lage et enkelt akka-oppsett i min spilleapplikasjon. Jeg har lest at jeg skal skape min ActorSystem globalt, men skal jeg lage en singleton for å holde referansen. Jeg har et enkelt json-endepunkt i min spilleapplikasjon, så når det samme api-endepunktet blir kalt, vil jeg sende meldingen til min akka skuespiller. Jeg lager i utgangspunktet et akka-system som bygger rundt spill, slik at det kan sendes meldinger over http. Merk: Jeg vil ikke bruke standard akka-systemet i spill, jeg må lage min egen i application. conf Hvordan skal jeg lage min ActorSystem i min onStart-metode i Global. scala, og hvordan vil jeg referere dette i kontrolleren min også? er det et eksempel application. conf-oppsett for spill 2.2.3 Best How To: Først kan du definere Global. scala inne i den vanlige pakken som følger (det kan ikke være i standardpakken siden du ikke kunne få tilgang til denne klassen) : Så kan du bruke det systemet i dine kontroller som i: Endelig må du justere application. conf og angi at Global. scala er i et ikke-standard sted: Selv om jeg ikke er helt sikker, hvis i Play 2.2.x Du må kanskje skrive: Du bruker sannsynligvis fortsatt eldre ruting. Fra dokumentasjonen: Injiseringsruter-generator Som standard genererer Play en statisk ruter, som forutsetter at alle handlinger er statiske metoder. Ved å konfigurere Play for å bruke den injiserte rutergeneratoren, kan du få Play for å generere en ruter som vil deklarere alle. ren for zip-listene gjentar verdien for alltid, så det er ikke mulig å definere en zippy applikativ forekomst for Scalas List (eller for noe som lister). Scalaz gir en Zip-tag for Stream og den passende zippy applikative forekomsten, men så vidt jeg vet er den fortsatt ganske ødelagt. For å tvinge Hibernate til å starte en ny transaksjon i spillrammen og dermed gi deg en ny enhetssjef som vil returnere objektet som det er i databasen og ikke en referanse til det, må du spesifikt spørre spillrammen for å starte en ny transaksjon gjennom. Spørsmålet ditt er uklart, men jeg tar et skudd. Å gå fra: val x Array (a, x, y, b) til a: x, y: b Du kan bruke mkString: x. mkString (:). triangleCount teller antall trekanter per toppunkt og returnerer GraphInt, Int, så du må trekke ut vertices: scalagt graph. triangleCount (). vertices. collect () res0: Array (org. apache. spark. graphx. VertexId, Int) Array (1,1), (3,1), (2,1)). Jeg kommer bare til å kommentere findstart for nå. Det er to ting feil med findStart: findStart blir rekursivt kalt på hver tilstøtende celle. Dessverre er nabo cellen av en nabo selve cellen. Funksjonen sjekker aldri om du faktisk kan gå på en gitt celle (jeg antar. Du kan ringe flatkart med identitetsfunksjonen for å flette strukturen til RDD-en. Rdd. flatMap (identitet).Så, mange problemer. Alt det gjør deg gjør det til å bli gjort i konstruktøren til boken, og redone for every instance. Din hovedmetode Det blir kompilert for eksempel bokmetode, ikke en statisk metode, slik at den ikke tjener et inngangspunkt for en kjørbar. Enhver operatør med a. På sin høyre side har operandene vendt. Det er andre operatører som gjør bruk av dette til (kan ikke tenke på noen eksempler fra toppen av hodet mitt skjønt).

No comments:

Post a Comment