Tôi mới sử dụng các macro scala và tôi đã dành một vài ngày để cố gắng viết cái đầu tiên của tôi. Tôi gặp vấn đề với nối quasiquotes.Scala quasiquote concatenation
Có một danh sách các trường hợp khoản, chúng ta hãy nói như sau:
val cases = cq"x => 1 " :: cq"_ => 0 " :: Nil
Và tôi cần phải xây dựng một một phần chức năng từ nó. Vấn đề là tôi không có ý tưởng làm thế nào để dán chúng vào quasiquote cuối cùng. Tài liệu nói rằng tôi nên làm điều gì đó như sau:
q"{ case ..$cases }"
nhưng nó không hoạt động nếu tôi làm như vậy.
Có cách nào để xây dựng một PartialFunction từ danh sách như vậy không?
Cảm ơn bạn đã được trợ giúp.
Tôi tin rằng đây là cách tiếp cận chính xác. Lỗi nào bạn có chính xác? – Odomontois
Ngoài ra mô hình của bạn hơi lạ 'x => 1' sẽ tính toán bất kỳ biểu thức nào, nếu bạn đang tham chiếu đến một số giá trị cục bộ có tên' x', bạn nên sử dụng '\' x \ '=> 1' làm patern – Odomontois
. : ngoại lệ trong khi mở rộng macro: java.lang.IllegalArgumentException: scala.collection.immutable.List (trường hợp (x @ _) => 1, trường hợp _ => 0) không phải là đại diện hợp lệ của trường hợp khớp mẫu. –