Fortran 派生类型

2023-12-19

我想知道是否可以在 Fortran 中定义一个派生类型,它会自动返回正确的类型,而无需专门调用该类型,例如var%real?这是一个例子来解释我的意思:

module DervType

  implicit none

  type, public :: mytype
    real(8) :: r
    integer :: i
    logical :: l
  end type

end module DervType

program TestType

  use DervType

  implicit none

  type(mytype) :: test

  test = 1.                   !! <-- I don't want to use test%r here

end program TestType

通过定义某种接口分配(重载=)或类似的东西可以实现这一点吗?这可能吗?

谢谢!任何帮助表示赞赏!


找到了解决这个问题的方法,实际上非常简单。这是代码:

module DervType

  implicit none

  type, public :: mytype
    real(8)                       :: r
    integer                       :: i
    character(len=:), allocatable :: c
    logical :: l
  end type

  interface assignment(=)                 // overload = 
    module procedure equal_func_class
  end interface

contains

  subroutine equal_func_class(a,b)

    implicit none

    type(mytype), intent(out) :: a
    class(*), intent(in)      :: b

    select type (b)
        type is (real)
            print *, "is real"
            a%r = b
        type is (integer)
            print *, "is int"
            a%i = b
        type is (character(len=*))
            print *, "is char"
            a%c = b
        type is (logical)
            print *, "is logical"
            a%l = b 
    end select

    return

  end subroutine equal_func_class  

end module DervType

program TestType

  use DervType

  implicit none

  type(mytype) :: test

  test = 1.      // assign real 
  test = 1       // assign integer
  test = "Hey"   // assign character
  test = .true.  // assign logical

  print *, "Value (real)      : ", test%r
  print *, "Value (integer)   : ", test%i
  print *, "Value (character) : ", test%c
  print *, "Value (logical)   : ", test%l

end program TestType

我现在正在尝试在程序中使用变量(例如,进行一些算术计算等),但这似乎相当困难,如果不是不可能的话。我可能会就此提出另一个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fortran 派生类型 的相关文章

  • 验证 C# 中的属性

    让我们建议我有一个接口并从中继承类 internal interface IPersonInfo String FirstName get set String LastName get set internal interface IRe
  • SWI-Prolog 中的跨模块“接口”调用

    这可能是 SWI Prolog 模块系统特有的 假设我们有三个 Prolog 模块 在 SWI Prolog 模块系统中 robin 在文件中robin pl arthur 在文件中arthur pl helper 在文件中helper p
  • 使用 Fortran 进行数组问题的二分查找

    我正在使用 Schaum 的 Fortran 77 编程概要 一书 其中有一个关于使用括号值组方法进行二分搜索的示例 首先这是代码 INTEGER X 100 INTEGER RANGE INTEGER START FINISH PRINT
  • GO TO 语句 - Fortran 到 Matlab

    我一直在努力将此网格搜索代码从 Fortran 转换为 Matlab 但是我无法正确合并 GO TO 语句 我正在尝试使用 while 循环 但我认为我需要其他东西来结束搜索 任何帮助将不胜感激 vmax 1 0E 15 amax G 1
  • Fortran的性能

    Fortran 的表现计算机语言基准游戏 http shootout alioth debian org 出奇的糟糕 今天的结果显示 Fortran 在两项四核测试中分别排名第 14 和第 11 在单核测试中排名第 7 和第 10 现在 我
  • 指针的 Fortran 副本

    我有一个包含指针 p 的 var 类型 我需要将 var 复制到与 var 类型相同的另一个变量 var1 上 通过执行 var1 var 在引号中 因为我不知道这是否是正确的方法 请参见下文 在我的实现中 var 和 var1 被传递给一
  • Android 中所有活动的单套接字 IO 连接

    我已经为 SocketIOClient 参考创建了 Singleton 类here https stackoverflow com questions 13709783 android socket io switch activities
  • Fortran 意图(inout)与省略意图

    良好的实践表明 Fortran 中的子例程参数每个都应具有指定的意图 即intent in intent out or intent inout 如上所述这个问题 https stackoverflow com questions 1011
  • 带有过程参数的通用类型绑定过程

    我正在尝试编写一个通用的类型绑定过程 它将不同的回调函数作为参数 当编译以下代码 使用 ifort 12 1 3 时 我收到以下警告 module test type a type contains procedure t s gt at
  • 我担心我添加了太多接口

    我正在构建我的领域模型并继续重构它 正如我所做的那样 我发现我喜欢接口 因为它允许我根据接口为具体类型创建可重用的方法 控制器 视图 但是 我发现每次向域实体之一添加新属性时 我都会创建一个接口 例如 我有一个会员状态从抽象继承的对象Ent
  • Fortran DLL 导入

    Fortran 中有一段代码罗伯特 L 帕克和菲利普 B 斯塔克 http www stat berkeley edu 7Estark Code sbvq f FORTRAN subroutine bv key m n a b bl bu
  • 使用 Cygwin64 的 Fortran MPI

    我正在使用 Codeblock IDE 编写和编译我的 Fortran 程序 现在我想将 MPI 包含到我的 GNU Fortran 编译器中 在遵循 GNU GCC 编译器的一些指南之后 我突然想到我需要为 MPICH2 设置以下内容 有
  • 带有数字/标签的 Fortran IF 语句而不是另一个语句

    这段 Fortran 代码的含义是什么 IF J1 3 20 20 21 21 J1 J1 3 20 IF J2 3 22 22 23 23 J2 J2 3 22 CONTINUE 我在旧项目中看到过 我不知道这个带有数字 标签 的 IF
  • 更改为通用接口对性能的影响

    我使用 Visual Studio 使用 C NET 开发应用程序 ReSharper 在我的方法原型中经常建议我用更通用的类型替换输入参数的类型 例如 如果我仅在方法主体中使用带有 foreach 的列表 则使用 List 和 IEnum
  • 将结构化数据类型从 Fortran 传递到 C++ [重复]

    这个问题在这里已经有答案了 我在 Fortran 中有一个结构化类型 其中包含大量数据 包括指针 real 8 指针数据类型 我正在为某些 Fortran 例程开发 C API 我需要在对 Fortran 例程的调用之间保留该结构的内容 我
  • 如何从 Fortran 调用 R 函数?

    根据http gallery rcpp org articles r function from c http gallery rcpp org articles r function from c Rcpp 允许用户从 C 调用 R 函数
  • Fortran 子例程返回错误值

    嘿 我正在开发一个 Fortran 程序 遇到了一个奇怪的问题 当我尝试在调用特定子例程之前直接输出数组的某些值时 我得到了正确的值 然后 我尝试在启动子例程时输出同一数组的一些值 它们都是 0 我最终在子例程之后输出数组的值 并且这些值回
  • 在接口中使用 Java 泛型来强制执行以实现类型作为参数的方法

    我有一个这样的界面 public interface DataObject public void copyFrom DataObject source 以及一个实现它的类 public class DataObjectImpl imple
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu

随机推荐

  • 开发人员能否“强制”系统防止“Metro”应用程序在后台异步进程运行时被挂起?

    当应用程序当前不在 Win8 中处于 前端和中心 位置时 它就会被挂起 这是否会妨碍应用程序在后台显式保持活动状态 例如在电子邮件客户端中 使用异步操作轮询邮件服务器以查找新消息并下载它们 然后使用新消息数更新磁贴 如果这是不可能的 挂起的
  • 我怎样才能传递 UIColor 的名字

    我想知道如何将 UIColor 的名称传递给特定方法 EDIT id setLabel NSString text WithColorName NSString nameOfColor FontName NSString f name Fo
  • 检查 JComboBox 中是否已存在某个项目?

    除了迭代 JComboBox 之外 是否有一种简单的方法来检查 JComboBox 中是否已存在某个项目 这就是我想做的 Item item boolean exists false for int index 0 index lt myC
  • React Native Firebase DataSnapshot

    我正在尝试使用以下代码将 firebase 实现到我的 React Native 应用程序中 import as firebase from firebase var fireBaseconfig apiKey MY KEY authDom
  • Spring JPA:使用@Transactional和@PersistenceContext的应用程序管理持久性上下文

    目前 我正在尝试应用程序管理的持久性上下文 方法是手动创建实体管理器并存储它们 以在 JSE 应用程序中启用跨多个请求调用 可能类似于扩展持久性上下文 的事务 但是 我想知道是否可以通过使用 spring 的 PersistenceCont
  • 暂停和恢复 setInterval

    window setInterval function do stuff milisec 有没有办法随意停止这个间隔 并从它持续的地方恢复它 比如说 代码每 5 秒运行一次 我在第二秒中间停止它 当恢复时 我希望它运行剩余的 3 秒 然后每
  • iPhone 8 和 iPhone X 的型号名称是什么? [复制]

    这个问题在这里已经有答案了 谁可以使用 iPhone 8 和 iPhone X 告诉我型号名称吗 可以通过以下方式访问它UIDevice current modelName Anbu提到的信息是 iPhone 8 iPhone10 1 和
  • Java containsAll 在给定列表时不返回 true

    我想检查一个数组是否是另一个数组的子集 程序打印错误 但我期望正确 为什么 containsAll 不返回 true int subset subset new int 3 subset 0 10 subset 1 20 subset 2
  • Rails 多态关联(遗留数据库)

    我使用的是旧数据库 因此我对数据模型没有任何控制权 他们使用很多多态链接 连接表 就像这样 create table person per ident name create table person links per ident obj
  • python 中的 import 关键字实际上是如何工作的?

    假设我有 3 个文件 a py from d import d class a def type self return a def test self try x b except print EXCEPT IN A from b imp
  • 将 Kivy 设置为全屏时出现问题

    我正在尝试编写一个全屏运行 kivy 的应用程序 但这些是我的问题 1 当我运行命令时 Config set graphics fullscreen 1 然后 kivy 似乎已完全运行 但窗口的背景图像周围有很多黑色空间 即使我拉长图像 k
  • 它相当于 llvm 中的 size_t

    某些系统库 例如 malloc strlen 需要或返回 size t 作为参数 LLVM IR 中与这些函数交互的正确选择是什么 选择是编译器的任务吗 LLVM IR 有 size t 类型吗 在LLVM级别 size t不存在 它是为了
  • TBB,一项任务的线程数固定,其他任务的线程数默认

    我想在一组块上并行执行 for 循环 使用 TBB 其中每个块将使用用户提供的函数进行处理 通常 我会使用tbb parallel for 由于各种原因 我希望能够将处理块的线程数量限制为规定的数量 称之为j 通常 我会使用tbb task
  • XF - SignaturePad 仅在触摸结束时显示笔划

    我在用着签名板 https github com xamarin SignaturePad with Xamarin Forms即使在基本的硬件设备上它也能正常工作 但我在仅使用一台设备时就遇到了奇怪的行为 三星 Galaxy Tab E
  • Mongodb聚合组按逻辑还是?

    我想尝试根据文档中两个布尔字段的逻辑或进行分组 基本上 文档有两个可以表示错误条件的字段 如果其中一个字段为 true 那么我想在 id 为 true 的情况下创建一个状态字段 但如果两者都不为 true 那么我希望状态为 false 我希
  • 如何修复 JSP 编译器警告:扫描了一个 JAR 的 TLD 但不包含 TLD?

    当启动应用程序或通过 ant 编译 JSP 时 Tomcat 7 Jasper 抱怨 JAR 文件多余或放错位置 我收到以下消息 compile jsp jasper Jul 31 2012 7 15 15 PM org apache ja
  • OSSEC 电子邮件通知发送电子邮件失败

    我在尝试获取 ossec 功能时收到错误 电子邮件通知 我在这个案例中使用了我的 Gmail 帐户 我试过这个tutorial https www digitalocean com community tutorials how to in
  • 如何在 SequelizeJS 中使用 $in 运算符?

    我尝试在 SequelizeJS 中使用 in 运算符 就像在 MySQL 语句中一样 SELECT column name s FROM table name WHERE column name IN value1 value2 就我而言
  • Spark Streaming - 根据按键分组的键值对计算统计信息

    背景 我正在使用 Spark Streaming 从 Kafka 流式传输事件 这些事件采用逗号分隔键值对的形式 以下是事件如何流入我的 Spark 应用程序的示例 Key1 Value1 Key2 Value2 Key3 Value3 K
  • Fortran 派生类型

    我想知道是否可以在 Fortran 中定义一个派生类型 它会自动返回正确的类型 而无需专门调用该类型 例如var real 这是一个例子来解释我的意思 module DervType implicit none type public my