-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Allow the definition of default value for optional dummy arguments:
subroutine foo(bar, baz=.false.) ! inline default value definition
integer, intent(inout) :: bar
logical, intent(in), optional :: baz
if (baz) then ! using baz even when it is not passed is good because it has a default value
bar = bar + 1
else
bar = bar - 1
endif
end subroutine foo The default value is clearly indicated into the procedure signature. I presume that the default value should follow all the rules that apply to variable initialization. The builtin present will remain untouched as well the other optional related behaviors except that baz is usable even in the case it is not passed when a default value is assigned.
Rationale
Without the ability to define a default value to optional dummy arguments, we have to mimic it by local variables, e.g.
subroutine foo(bar, baz)
integer, intent(inout) :: bar
logical, intent(in), optional :: baz
logical :: baz_local
baz_local = .false.
if (present(baz)) baz_local = baz
if (baz_local) then
bar = bar + 1
else
bar = bar - 1
endif
end subroutine foothat is more verbose and error prone, especially when the optional dummies are many.
Other languages
Python has such a feature.
jacobwilliams, milancurcic and zbeekmanzbeekman
Metadata
Metadata
Assignees
Labels
No labels