Skip to content

Commit 989c282

Browse files
authored
Update ch05-05-overload.md
1 parent 246d80f commit 989c282

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/ch05-05-overload.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
Fortran 2018引入了`generic`关键字,也可以对函数进行重载,语法大大简化(`gfortran`不支持,`ifx,flang`支持)
1010

1111
``` fortran
12+
! src/add_mod.f90
1213
module add_mod
1314
implicit none
1415
interface add
@@ -27,7 +28,7 @@ contains
2728
c=a+b
2829
end function add_real
2930
end module add_mod
30-
31+
! app/main.f90
3132
program main
3233
use add_mod
3334
write(*,*)add(1,2)
@@ -36,6 +37,12 @@ program main
3637
3738
end program main
3839
```
40+
```
41+
$ fpm run
42+
3
43+
3.00000000
44+
```
45+
如果使用`generic`语法,则使用`fpm run --compiler ifort`
3946

4047
## 运算符重载
4148

@@ -63,6 +70,10 @@ program main
6370
write(*,*)'"',"hello "+"world ",'"'
6471
end program main
6572
```
73+
```sh
74+
$ fpm run
75+
"hello,world"
76+
```
6677
- 运算符重载有时候会写出比较含糊的代码,建议要谨慎使用。
6778
- 不可以对运算符二次重载,例如我们无法对整数的加法进行再进行重载
6879

@@ -100,3 +111,9 @@ program main
100111
write(*,*) 5 .in. [1,2,3,4]
101112
end program main
102113
```
114+
``` sh
115+
$ fpm run
116+
T
117+
F
118+
```
119+
- 重载的函数和运算符**不能用于**Fortran的回调函数中。Fortran目前也没有`lambda`表达式。

0 commit comments

Comments
 (0)