Czy scala ma odpowiednik warunku programu?schemat w języku scala
Odpowiedz
Domyślam się, że szukasz match
(lub po prostu if/else if/else
).
case class Paired(x: Int, y: Int)
def foo(x: Any) = x match {
case string : String => println("Got a string")
case num : Int if num < 100 => println("Number less than 100")
case Paired(x,y) => println("Got x and y: " + x + ", " + y)
case unknown => println("??: " + unknown)
}
Pierwsze dwa opisy przypadków pokazują dopasowywanie wzorców oparte na typie. Trzecie pokazuje użycie Ekstraktora do podziału danych na części składowe i przypisania tych części do zmiennych. Trzeci pokazuje dopasowanie ze zmiennym wzorcem, które będzie pasować do wszystkiego. Nie pokazany jest przypadek _:
case _ => println("what")
który podobnie jak zmiennej strukturze mecz, zapałki niczego, ale nie wiąże się dopasowanego obiektu do zmiennej.
Klasą przypadku na górze jest skrót Scala służący do tworzenia ekstraktora oraz samej klasy.
Oczywiście, ani match
ani if
nie robi dokładnie to samo, co cond
. Jedną z możliwości jest zrobić tak:
object Cond {
def apply(clauses: Iterable[(()=>Boolean,()=>Any)]): Any = {
clauses find (_._1()) map (_._2()) getOrElse()
}
}
Ten obiekt akceptuje coś iterowalny gdzie każdy element jest parą funkcję powracającego Boolean oraz funkcję powracającego Any. Próbuje znaleźć element, którego pierwsza funkcja zwraca wartość true, przestaje sprawdzać, czy znajduje, wywołuje drugą funkcję na znalezionym elemencie i zwraca wynik tej funkcji (lub(), jeśli żadna nie została znaleziona).
Przykłady:
val clauses = Seq(
({()=>false}, {()=>println("foo")}),
({()=>true}, {()=>println("bar")})
)
Cond(clauses)
def checkYear(year: Int) = {
Cond(Seq(
({()=>year % 400 == 0}, {()=>42}),
({()=>true}, {()=>{c:Char => (c.toString * 3)}})
))
}
ETA: Tak, wiem, że jest brzydki, ale to działa.
- 1. Schemat importu i eksportu w języku kassandra
- 2. Ciecz w języku Java/Scala
- 3. Schemat Sankeya w R
- 4. Domyślny schemat w MySQL
- 5. Schemat gwiazd w SQLAlchemy
- 6. Schemat mongozy w schemacie
- 7. Schemat serwera SQL i domyślny schemat
- 8. Wysoka wydajność funkcji mieszania napisów w języku Java/Scala
- 9. Zaplanowane Executor w Scala
- 10. Schemat organizacyjny
- 11. w języku Java, który schemat kodowania to 8-bitowy ASCII w USA?
- 12. Schemat ewolucji w formacie parkietowym
- 13. Omów schemat w kwerendzie DERBY
- 14. Jak stworzyć schemat w SQL
- 15. Scala podczas niezgodności typu (true)? Nieskończona pętla w scala?
- 16. CMS w języku programowania funkcjonalnego
- 17. zbiory Scala schematu blokowego
- 18. Schemat let statement
- 19. Schemat JSON: wymagane pole
- 20. Schemat DB dla czatów?
- 21. Schemat architektury logicznej
- 22. Jak dołączyć schemat SDWebImage
- 23. MIT Schemat REPL historia
- 24. Schemat klasy UML MVC
- 25. Konwersja notacji naukowej - Schemat
- 26. Schemat - generowanie losowe
- 27. Schemat bazy danych EtherPad?
- 28. Schemat repozytoriów Standaryzacja metod
- 29. czy JSON ma schemat
- 30. Jak utworzyć schemat blokowy