寻找构造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语句的主要内容,如果未能解决你的问题,请参考以下文章

在“with”语句中调用构造函数

使用 with as 优化SQL

json 可视代码工作室Angular with Firebase片段

sql里面 with...as 是啥意思啊?如何使用

刚刚接触VB的问题

『vb』如何让ole控件中途循环?