【问题标题】:Operator to check file existence操作员检查文件是否存在
【发布时间】:2015-05-06 19:05:56
【问题描述】:

我想创建一个运算符 .f。检查文件是否存在以便我可以编写

if (.f. filename) Then ...

我已经写了一个函数来做这个,现在必须创建接口。具有上述功能的 e 函数参数有什么限制?

【问题讨论】:

  • 你应该可以调用 stat
  • 这是问题的哪一点,因为您不只是要求代码转储?是不是“我如何编写一个基于文件的存在返回逻辑的函数?”或“如何使该函数适合作为一元运算符?”。
  • 请开始编写您自己的代码! [虽然这听起来很傻,因为我只是为你做的......]与其将工作外包给 SO,你应该至少自己做部分研究。
  • 我已经创建了该函数,但需要设置一个运算符才能像示例中那样工作。
  • @Zeus 我不明白...运算符部分与您在this question 中所做的一样完全?!这有效地将问题简化为“我如何编写一个检查文件是否存在的函数?” - 正如 francescalus 所说。

标签: fortran operator-keyword


【解决方案1】:

您可以使用inquire 内在函数:

module fileIO

interface operator( .f. )
  module procedure file_exists
end interface

contains

function file_exists(filename) result(res)
  implicit none
  character(len=*),intent(in) :: filename
  logical                     :: res

  ! Check if the file exists
  inquire( file=trim(filename), exist=res )
end function

end module

program test
  use fileIO

  print *, file_exists('/dev/null')
  print *, .f. '/dev/null'

end program

【讨论】:

  • 添加了运营商版本。但我同意@francescalus 的观点,因为这太过分了。
  • 我同意你们俩的观点,即操作员太过分了。但后来我怀疑@Zeus 正在使用比 Fortran 更高级的语言进行编程,并使用 Fortran 直到可以使用其他语言的编译器。
  • 当然我的功能远不止这些。我想放一个不会吓到你的小事。 ;)
  • 我在 fortran 中做了一些功能。我从事可扩展编程,其中一种语言可以由用户发展。查看 Guy Steele 的 Growing a Language youtube.com/watch?v=_ahvzDzKdB0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 2021-12-25
  • 1970-01-01
相关资源
最近更新 更多