Biểu thức mixin
thoạt nhìn tựa như eval
trong JavaScript
:
nó biến đổi chuỗi đầu vào thành mã nguồn. Nhưng trong D
, mixin
chỉ xảy ra lúc biên dịch, và nó chỉ nhận đầu vào là chuỗi:
mixin("int b = 5");
assert(b == 5); // b bằng 5 đúng như mong đợi
mixin
cũng có thể nhận đầu vào là các chuỗi được ghép hay phát sinh từ
các biểu thức phức hợp, miễn là chuỗi kết quả không phụ thuộc vào các giá trị
lúc chạy chương trình (runtime
).
mixin
cùng với CTFE
trong phần kế tiếp giúp xây dựng các thư viện
ấn tượng như Pegged là thư
viện giúp sinh ra bộ phân rã ngữ pháp (grammar parser
)
từ chuỗi định nghĩa cú pháp trong mã nguồn.