Câu hỏi thứ nhất:Cách thích hợp để chuyển các tham số mảng tới hàm D
Tham số hàm mảng D luôn được truyền theo tham chiếu hoặc theo giá trị? Ngoài ra, ngôn ngữ có thực hiện Sao chép khi viết cho mảng không? Ví dụ:
void foo(int[] arr)
{
// is arr a local copy or a ref to an external array?
arr[0] = 42; // How about now?
}
Câu hỏi 2:
Giả sử tôi có một mảng lớn sẽ được chuyển sang cho hàm foo
như một tham số chỉ đọc và nó nên tránh càng nhiều càng tốt sao chép mảng, vì nó được cho là một vật thể rất lớn. Những từ như sau (hoặc ai trong số họ) sẽ khai báo tốt nhất cho chức năng foo
:
void foo(const int[] bigArray)
void foo(in int[] bigArray)
void foo(const ref int[] bigArray)
trong danh sách của bạn ở dạng no-op (dunno ở bất kỳ vị trí nào), hơn nữa, sử dụng const không thay đổi bất cứ nơi nào thích hợp bởi vì nó mạnh hơn const'ness – Quonux