LINUX.ORG.RU

Как правильно вернуть из функции динамический массив/матрицу

 


0

1

В общем решил немного изучить fortran (for fun), решил написать одну программку, которая делает некоторые расчеты.

Данные идут из файла, количество данных не фиксировано, поэтому массив (по идее) должен быть динамическим. Пишу real, dimension(:), allocatable :: m, а emacs’овский fortran-mode ругается на то, что ALLOCATABLE attribute conflicts with RESULT attribute, хотя gfortran даже не давится с -Wall -Wpedantic -Wextra. Код:

  function get_map() result(m)
    implicit none
    integer, dimension(:), allocatable :: m ! fortran-mode ругается именно тут
    allocate(m(15)) ! пока так, потом напишу функцию, которая возвращает кол-во элементов
    open(unit = 1, file = 'field2.txt', status = 'old')
    read (1, *) m
    close(1)
    print *, m
  end function get_map

В общем, мой вопрос: все ли так я делаю и не обращать внимание на то, что ругается fortran-mode?

Ну и спрошу сразу, чтоб отдельную тему не создавать - читать большую книгу по fortran как-то лень, поэтому посоветуйте какой-то интернет ресурс, где вкратце бы пояснялся fortran и то как делать надо, а как не надо.

★★★
Ответ на: комментарий от snake266

ну так надо intent(out) как бы в объявление переменной. Там где type(map), intent(out) :: m

Еще если функция, а не subroutine, то нифига напечатать не получится.

И книгу сейчас еще вспомню посоветую. Хотя изначально кажется достаточно простой и красивый синтаксис, тонкостей много. Лучше книга (есть таковая).

sshestov ★★
()
Ответ на: комментарий от sshestov

Книга такая: Илья Чернов «Фортран сегодня». Очень, очень рекомендую к прочтению, потому как тонкостей весьма много и они повсюду.

https://sites.google.com/site/fortrantoday/books/book

sshestov ★★
()
Последнее исправление: sshestov (всего исправлений: 1)
Ответ на: комментарий от sshestov

Спасибо за книгу, обязательно прочитаю! Она как раз небольшая.

snake266 ★★★
() автор топика
Ответ на: комментарий от sshestov

Да, тонкостей много, по примерам в интернете на stackoverflow не научишься)

snake266 ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.