Tôi sẽ sử dụng official example từ tài liệu hướng dẫn thực hiện một DSL để tạo HTML.Các loại DSL xây dựng an toàn của Kotlin, an toàn cho chức năng ngoài cùng
Vì Kotlin 1.1, chú thích @DslMarker
cho phép chúng tôi hạn chế phạm vi chức năng trong các lớp của chúng tôi, chẳng hạn như ví dụ với chú thích @HtmlTagMarker
. Điều này cho chúng tôi lỗi khi cố gắng viết mã có cấu trúc không chính xác như sau:
html {
body {
body { // this in an error, as it's a function call on the outside Html element
}
}
}
Tuy nhiên, điều này không ngăn cản chức năng ngoài cùng, đó là điểm nhập vào DSL. Ví dụ, với ví dụ như bây giờ, điều này có thể được viết ra mà không có vấn đề:
html {
html {
}
}
Có cách nào để làm cho DSL an toàn hơn về vấn đề này không?
Về cơ bản là hoàn hảo, cảm ơn! – zsmb13