我在Fortran模块中有一个函数,带有两个必需参数和一个可选参数。如果不存在可选参数,我想在函数中为其设置默认值。
使用该函数时,出现分段错误:Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
回溯是指
的第一行if (.not. present(optionalArg)) then
optionalArg = 2
end if
并定义了功能
function func(reqArg1, reqArg2, optionalArg)
real(kind=real64), intent(in) :: reqArg1
integer, intent(in) :: reqArg2
integer, optional :: optionalArg
real(kind=real64), dimension(reqArg2) :: func
...
这是定义带有可选参数的函数的正确方法吗?我尝试在调用另一个函数的模块和定义该函数的模块中都为该函数编写一个显式接口,但是两者都会给我带来错误。如果将接口放在调用函数的模块中,则会得到Error: Cannot change attributes of USE-associated symbol func
,因为该模块已经包含在USE
语句中;如果将接口放在函数的模块中,则会出现关于当编译器在CONTAINS
块内到达实际函数定义时,已经定义了该函数。
答案 0 :(得分:1)
此代码显然无效
---
- hosts: localhost
gather_facts: false
vars:
rows:
- alpha
- beta
- gamma
cols:
- one
- two
- three
tasks:
- name: Loop include tasks
include_tasks: test2.yml
with_items:
- "{{ rows }}"
loop_control:
loop_var: rowsval
您无法访问不存在的可选参数的值。您无法阅读,也无法设置,必须使用其他局部变量,我敢肯定,这里有其他问答示例。
---
- name: Start task
debug:
msg: "Start iteration"
- name: Loop task
debug:
msg: "processing now: {{ rowsval }} with: {{ item }}"
with_items:
- "{{ cols }}"