Skip to content

Magyarul a top calc dsl hez szükséges Scala ismeretek

János Setény edited this page Nov 20, 2018 · 4 revisions

Parser Combinator első lépései

Lásd: https://github.com/scala-szeged/dsl-for-starting-in-dependency-order/wiki/Magyarul-Scala-Parser-Combinators-első-lépések

A szükséges Scala ismeretek

def *

case class MyNumber(n: Double, unit: String) {
  def *(other: MyNumber) = MyNumber(n * other.n, unit) // naív megvalósítás
}

MyNumber(2, "$") * MyNumber(3, "$") //eredménye: MyNumber(6.0, "$")

trait, class és object

A Scala-beli trait a Java-beli interface megfelelője. A class -ok példányait (objektumokat) new segítségével lehet lérehozni. Az object kulcsszó egyszerre definiál egy osztályt (class) és egy globálisan elérhető egyetlen példányt az adott osztálybó

Típusok és összetett típusok

def number: Parser[Option[Int]

A fenti példában a Parser, az Option és az Int típusok és egymás típusparaméterei. Így a number nevű metódus Parser -eket ad vissza, amelyek képesek a parse -olás eredményét egy Option belsejében letárolni. Ha belekerül valami, akkor az Option -ből leszármazott Some -ot használjuk pl: Some(45). Ha nem kerül bele semmi, akkor None -val jelöljük.