arrays - 隐含在数组构造函数中构造重复的标量值
问题描述
我试图弄清楚为什么在数组构造函数中的 do 构造之前放置标量会产生它所做的答案。
我一般理解 do 构造,这(/(i,i=1,5)/)
相当于(/1,2,3,4,5/)
.
real, dimension(4) :: a
integer :: i
a=(/(50,i,i=1,2)/)
这将产生数组50.0000000, 1.00000000, 50.0000000, 2.00000000
。充其量我会期望一个错误,因为步长不会产生足够的值来填充数组。
解决方案
使用多个 s 生成的数组50
是预期的。
部分问题文本与代码发生的情况不匹配:
在数组构造函数中的 do 构造之前放置标量
在[(50,i,i=1,2)]
(为了清楚起见,使用 Fortran 2003 [...]
)标量值50
不是“在”隐含的 do 之前,而是它的一个明确部分。这可以与
a = [50, (i,i=1,3)]
这将导致构造数组[50, 1, 2, 3]
。
数组构造函数的隐含 do 的正式语法是
( ac-value-list , ac-implied-do-control )
因此可以看出,多个值可以是隐含的 do 控制范围的一部分,即使通常只使用单个值。对于这样的多个值,它们都针对隐含的 do 的每次迭代进行评估(并且50
每次评估相同)并用于数组构造。
推荐阅读
- c# - 使用 powershell 脚本从 c# 代码调用 dll 不起作用
- python - Python Pandas:根据类别的最高频率更改值
- java - 使用 ELSA 序列化在 MapDB 中存储 JSONArray 时出现 org.mapdb.DBException$SerializationError
- mongodb - 如何将 MongoDB Atlas 连接到 GCP(谷歌云平台)?
- java - 如何为简单的离线桌面应用程序存储数据?
- python - FileNotFoundError:找不到模块“caffe2_nvrtc.dll”(或其依赖项之一)。尝试使用带有构造函数语法的完整路径
- azure - ADLS Gen2 中针对即将到来的用户的文件夹级别访问控制
- python - pandas groupby 包含不存在的日期
- vim - 如何在vim中获得删除按钮行为?
- c# - 在 spherecast 期间停止对象旋转