Fortran中初始化参数数组的正确方法是什么?

13

这个很好地起作用:

  program main
    integer,parameter,dimension(3) :: x = [1,2,3]
    print*,x
  end program main

就像这样:

  program main
    integer,parameter,dimension(3) :: x = (/1,2,3/)
    print*,x
  end program main

有没有理由认为一种形式应该比另一种形式更受欢迎(例如向后兼容性)?

1个回答

21

方括号形式是Fortran 2003中添加的语言特性。如果您正在编写Fortran 90(如问题标签所示),则方括号形式是语法错误(方括号不在Fortran 90字符集中)。

除了语言标准之外,个人偏好和风格也是一个问题。


你知道是否有讨论过为什么这种语言需要第二种声明数组字面量的方式吗? - mgilson
不是特别需要。我怀疑没有紧迫的需求,只是想要使用单个字符更易读,并且它们的使用在各种语言中有一定的惯例。 - IanH
这就是我对此的感觉 - 他们看了看语言,说:“哎呀,第一次做错了...那就再设法开发一种方法吧”。 叹气 然而,由于我正在尝试针对f90-f95,所以我想我还是会坚持使用丑陋的版本。谢谢。给你点赞加勾选。 - mgilson
可能他们想避免出现太多的连续括号:call somearrayfunc((/ 1, 2, 3 /))call somearrayfunc([ 1, 2, 3])。对我来说,第二种形式更易读。 - Bálint Aradi
1
我相信这是考虑到协同数组而引入的。 - max

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接