Trong Julia, có cách nào để viết macro mà các nhánh dựa trên kiểu đối số (biên dịch) của nó, ít nhất là đối với các đối số có thể suy ra tại thời gian biên dịch? Giống như trong ví dụ bên dưới, tôi đã tạo một hàm có tên là code_type
trả về loại biên dịch là x
. Có chức năng nào giống như vậy, hay cách nào để tạo ra loại hành vi này? (Hay macro được mở rộng trước khi loại được suy ra, như vậy mà loại điều là không thể.)Trong Julia, macro có thể truy cập loại suy luận của các đối số của nó không?
macro report_int(x)
code_type(x) == Int64 ? "it's an int" : "not an int"
end
Chỉ cần một lưu ý nhỏ về pedantic: các hàm được tạo ra hoạt động trên các kiểu đối số thực tế của nó và không chỉ là các kiểu suy luận. (Cả hai đều giống nhau nếu hàm này ổn định). –
Điểm tốt. Tôi cũng nên đề cập đến điều này chỉ có sẵn trên các bản xây dựng 0.4dev gần đây. – spencerlyon2