Jestem nowy w makrach scala i spędziłem kilka dni próbując napisać mój pierwszy. Mam problem z konkatenacją quasiquotes.Scala quasiquote konkatenacja
Istnieje lista klauzul case, powiedzmy, co następuje:
val cases = cq"x => 1 " :: cq"_ => 0 " :: Nil
I muszę zbudować częściową funkcję z niego. Problem polega na tym, że nie mam pojęcia, jak je wkleić w końcowym quasiquote. Dokumentacja mówi, że powinniśmy zrobić coś takiego:
q"{ case ..$cases }"
ale to nie działa, jeśli to zrobić.
Czy istnieje sposób na zbudowanie częściowej funkcji z takiej listy?
Dzięki za pomoc.
Uważam, że to jest prawidłowe podejście. Jaki błąd masz dokładnie? – Odomontois
Również twój wzorzec jest nieco dziwny 'x => 1' powoduje usunięcie dowolnego wyrażenia, jeśli odwołujesz się do lokalnej wartości o nazwie' x', powinieneś użyć '\' x \ '=> 1' jako patern – Odomontois
Błąd jest następujący : wyjątek podczas rozszerzania makr: java.lang.IllegalArgumentException: scala.collection.immutable.List (case (x @ _) => 1, case _ => 0) nie jest poprawną reprezentacją wzorca dopasowania wzorca. –