7

Fortan cho phép các chương trình con nguyên tố có ý định (inout) và ý định (out) đối số, nhưng các hàm nguyên tố chỉ được cho phép (in).Chức năng nguyên tố Fortran so với các phần tử con nguyên tố

Tại sao lại như vậy? Nó chỉ là một quy ước kiểu cách, hay có cái gì đó về mặt tổng quát khác nhau về cách gọi các hàm và gọi các chương trình con?

Nói cách khác,

Elemental Integer Function FOO(i) 
    Integer, intent(in) :: i 
    ... 
    FOO=something 
End Function 

Elemental Subroutine FOO(i, v) 
    Integer, intent(in) :: i 
    Integer, intent(out) :: v 
    ... 
    v=something 
End Subroutine 

— là những hiện thực của FOO tương đương hiệu quả?

+0

Tôi không thể hình dung ra, không có ý nghĩa gì khi gọi nó là thủ tục thuần túy nếu nó có tác dụng phụ. Tôi sẽ nguy hiểm một đoán và nói rằng các chức năng nguyên tố có thể hiệu quả hơn trong bối cảnh song song, trong đó nó là rõ ràng cho trình biên dịch như thế nào thủ tục hành xử. – bdforbes

+0

Tôi nghĩ rằng nếu một chương trình con thay đổi chỉ các đối số riêng của nó và không chạm vào các biến toàn cục, thì việc biên dịch chương trình con như vậy không khó. Nó có ý nghĩa để có chức năng như vậy. Ví dụ, một bộ tạo số ngẫu nhiên nên sửa đổi trạng thái của chuỗi số ngẫu nhiên (được mô tả bằng một mảng các số nguyên) và trả về một số ngẫu nhiên. Vì vậy, nó nên có một ý định (inout) và một ý định (ra) đối số. Cấp, người dùng có thể gây rối mọi thứ bằng cách chuyển các biến được chia sẻ cho chương trình con như vậy. Nhưng sau đó một lần nữa, không có mô hình lập trình nào là bằng chứng ngu xuẩn. – drlemon

Trả lời

6

Không có điểm trong việc có một chương trình con nguyên tố mà không có ít nhất một đối số intent(out) hoặc intent(inout), bởi vì bạn phải chuyển kết quả bằng cách nào đó. Một hàm có giá trị trả về của nó, một chương trình con phải sử dụng các đối số của nó. Trong Fortran 2008, các thủ tục nguyên tố AFAIK không cần phải thuần khiết, nhưng thật khó để tưởng tượng một chương trình con nguyên tố hữu ích chỉ thông qua các tác dụng phụ của nó.

Các vấn đề liên quan