寻找构造simto VB的WITH语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寻找构造simto VB的WITH语句相关的知识,希望对你有一定的参考价值。
更新一些不再完全支持我们需求的古老F77。我正在寻找VB的“WITH”语句的功能等价物,以支持从大量F77断开连接,单个变量到分层派生类型的转换。虽然代码更容易阅读和理解,但缺点是代码变得非常麻烦并且容易出现拼写错误。因此,使用WITH可以大大减轻转换负担。
VB的“WITH”语句对单个对象或用户定义的类型执行一系列语句。示例:如果我想引用我的派生类型名为Loads的元素,我会编写带有前缀每个元素的负载%的代码,这很麻烦。 WITH语句允许用假定的引用加载%重写块。
WITH Loads%
ID = blah
Description = blahblah
Duty(I) = 2
End WITH
建议...?
答案
没有Fortran构造,它提供了与VB的with
语句所描述的精确类比。对于你的特定例子,你可以写一些类似......
给定派生类型定义,例如
type :: load
character(4) :: id
character(32) :: description
integer, dimension(4) :: duties
end type load
以及该类型的变量
type(load) :: loads
您可以使用默认构造函数来设置loads
成员的值,如下所示:
loads = load('myid', 'my description', [1,2,3,4])
或者甚至喜欢这样:
loads = load(duties=[3,4,5,6], id = 'id2', description='description')
如果你在SO上查看Q和As关于Fortran派生类型构造函数的主题,你将会发现如何构建更复杂的构造函数,这些构造函数在调用时不需要给所有成员赋值。互联网上的其他地方也有一些有用的资源。
如果你的一个问题是避免键入长的,可能是多部分的实体名称,那么associate
结构可能会有所帮助。例如,如果,而不是loads
,你想避免键入的变量的名称是像long%structured%entity
,你可能会写
associate (shnm => long%structured%entity`)
shnm%id = 'idxx'
*etc*
end associate
我相信你很容易想出更广泛的使用with
的例子,如果不重复写loads%
就不容易翻译成Fortran。
以上是关于寻找构造simto VB的WITH语句的主要内容,如果未能解决你的问题,请参考以下文章