Hãy xem xét các mẫu sau:D: không mong muốn chức năng ẩn danh thuộc tính
mixin template test(void function() callback)
{
static this()
{
callback();
}
}
này hoạt động:
mixin test!(&sort_arr);
void sort_arr()
{
arr.sort;
}
Tuy nhiên điều này không làm việc:
mixin test!({ arr.sort; });
DMD cung cấp cho các lỗi sau :
Error: safe function 'main.__lambda6' cannot call system function '_adSort'
Error: @nogc function 'main.__lambda6' cannot call [email protected] function '_adSort'
Dường như với tôi rằng phiên bản lambda được phỏng đoán là safe @nogc
, trong khi không rõ ràng sort_arr
.
Làm cách nào để khắc phục điều này và chuyển một mẫu lambda ẩn danh tới mẫu này?
Edit: báo cáo lỗi nộp theo sự giới thiệu trong câu trả lời được chấp nhận: https://issues.dlang.org/show_bug.cgi?id=13481
Tôi đang nhắm vào 'std.algorithm.sort', tôi không nhận ra có tích hợp sẵn ... –
Để làm rõ, bạn cần nhập' std.algorithm' và làm 'arr.sort () 'thay vì' arr.sort'. Điều này là vì lý do lịch sử và sẽ không cần thiết sau khi sắp xếp được sắp xếp đúng cách. – Meta