【问题标题】:Fortran Function PolymorphismFortran 函数多态性
【发布时间】:2015-02-21 22:51:49
【问题描述】:

可以有一个结果是无限多态变量的函数吗?我希望能够从函数中输出数字或字符串。但是,字符串是一维数组。

将以下内容用于字符串,但在尝试标量数字时会引入问题。

Class (*), Dimension (:) :: t

【问题讨论】:

  • 这和你之前的问题stackoverflow.com/q/26951750/3157076有很大不同吗?
  • 我忘了那个。谢谢。尽管 wnat 编译与否存在 feq 并发症。我正在尝试使用计时功能。
  • 但是我想输出一个数组。
  • 我的错误,将更新问题。
  • 算了。过程调用将寻求匹配参数等级、类型和种类。 class(*) 会处理类型和种类,但你不会在标量和数组上匹配排名。 OTOH 对于许多 Fortran 程序员来说,字符串是长度大于 1 的字符变量,而不是字符数组。你为什么不把它编码,看看你是怎么做的。

标签: function fortran polymorphism


【解决方案1】:

我认为这是一个例子:

  select type (x=>f())
    type is (integer)
      print *,x
  end select

contains

  function f()
    class(*), allocatable :: f
    allocate(f, source=10)
  end function

end

不幸的是,我的两个编译器(gfortran 4.10、ifort 14)都崩溃了。

【讨论】:

    猜你喜欢
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2013-02-22
    • 1970-01-01
    • 2022-11-14
    • 2011-01-11
    • 2018-09-11
    相关资源
    最近更新 更多