问题标签 [inout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
218 浏览

swift - 如何在 Swift 中从另一个结构中编辑一个结构中的数组?

我在一个名为WorkoutBuilderView的结构中有一组“锻炼集” 。我的问题是我需要从嵌套在WorkoutBuilderView中的结构访问该数组的内容(如下所示)。此结构不需要嵌套在WorkoutBuilderView中,但它是首选。我唯一真正需要的是能够从另一个结构编辑集合数组。

可能为结构创建“inout”类型的参数?(据我所知,这只适用于方法)

  • 需要访问的数组称为sets
  • 需要访问的位置用注释标记//访问点

编码:

0 投票
0 回答
509 浏览

python - 如何使用 SWIG 包装一个 C++ 函数,该函数使用对结构向量的引用作为要在 Python 中使用的输入和输出?

正如标题问题所暗示的那样,我正在尝试使用 SWIG 来包装在 C++ 中定义的函数,该函数具有对用作输入和输出的结构向量的引用作为其变量之一(在 C++ 中很常见),因此该函数可以是在 Python 中使用。

我将 SWIG 版本 4.0.0 和 Python 3.6 64 位与 Visual Studio 2015(v140 编译器)一起使用。

上面突出显示的问题是 C++ 中的常见做法,因此无法找到一个示例来描述如何使用 SWIG 包装 C++ 中定义的函数以在 python 中使用来实现它,这令人惊讶。以下链接是我能找到的最接近的示例:

在 SWIG argout 类型映射中使用结构

如何在 SWIG/Python 中将结构列表传递给 C

但他们并没有帮助解决下面描述的问题:

我尝试的第一件事是在 SWIG 接口文件中使用带有 INOUT 选项的类型映射,该文件由以下内容给出:

其中 stData 是在 Structures.h 中定义的结构,而同时引用 nNumber 和数据的函数声明在 Read.h 中。

但是,当我尝试编译接口文件时,我收到警告消息:

警告 453:无法应用 (std::vector< stData > *INOUT)。没有定义类型映射。

所以我做了一些进一步的搜索,找到了博客:

如何使用 SWIG 类型映射通过 P/Invoke 将结构成员从 C++ 编组到 C#?

这基本上在回应中说:

“......您是否可以使用结构向量来代替?通过简单地包含 std_vector.i 和相关类型映射,我在传递结构或自定义对象的向量时没有问题,例如:

"

所以我尝试添加:

到应用调用上方位置的接口文件(上面提供),但在编译接口文件时仍然得到相同的警告消息。

现在我知道这只是一条警告消息,并且接口文件仍然可以编译,但是我没有得到 Python 中在将 apply 与 INOUT 一起使用时所期望的通常行为,即在函数中输入一个变量并获取输出由函数返回。

我还应该指出模板定义:

允许我在 Python 中定义一个结构向量并传递给函数调用——这是必需的,否则我会得到 typedef 不匹配错误——它实际上运行,但是在 Python 中工作时我得到了一些不寻常的行为。

下面是我用来运行 SWIG 包装的 c++ 库的 Python 脚本示例:

现在这里的函数调用将 tempNum 填充为具有值的列表(或数组):

因此为什么要调用列表中的第二个元素以打印结果;我不确定第一个元素指的是什么。有趣的是,我仍然能够从 vecOfStruct(python 中的一个类)访问信息,而无需将其实际设置为函数调用的返回值。但是当我尝试调用 read 函数并将 vecOfStruct 作为输入传递时,它不会从第一个函数调用附加到(现在填充的)vecOfStruct。

目的是将函数调用为:

在一个循环中,并且能够将 vecOfStruct 传回,让它附加来自不同文件的数据。

0 投票
1 回答
205 浏览

fortran - 如何在 FORTRAN 77 的 FORMAT 中按列写入

我在 ANSYS 计算软件上使用 FORTRAN77 作为第三方语言。在这里,我们可以在 I/O 操作期间将整个行和列写入文件。但是,我无法将光标移动到第一行并在此后逐列写入 - 对于定义的 2D 数组中的每一列。不幸的是,它将所有数据写入单列。我需要知道我可以在引用为 XXX 的地方使用什么 *CFOPEN, ACT_STR, CSV,,APPEND *DO,INF,1,2*S,1 *VWRITE, S0(1,INF), (XXX,F10.2,',') *CFCLOS

0 投票
0 回答
449 浏览

postgresql - 如何使用 jdbc 调用带有 INOUT 参数的 postgres 过程

我不太喜欢 Postgres,最近由于一些特定的要求做了很多冲浪。我有这个特定的程序

我需要使用此过程来调用我的 jdbc 连接并使用 INOUT 参数。我这样称呼它,

但不工作。

我在找到正确的方法来通过时遇到问题,也不太明白如何为 ref 游标设置参数。请帮忙解释一下

0 投票
1 回答
4993 浏览

ios - Swift 5:转义闭包捕获'inout'参数

我已经有了从服务器收到的响应数据。此响应数据有一些面包师数据。

现在我想计算用户和面包店的距离,然后将其存储在同一个模态类中。我为它创建了一个函数。并且由于这个功能需要在 4,5 视图控制器中使用,我的计划是创建作为 UIViewController 的扩展

这就是我从服务器接收到数据后调用此函数的方式,

现在的问题:

据我所知,当您将参数作为 inout 传递时,可以从函数内部更改值,而这些更改会反映在函数外部的原始值中。

但是当我尝试代码时,它说Escapingclosure captures 'inout' parameter 'bakeryData'。在我的代码中,//6 正在产生错误。

如何修复此错误?

0 投票
2 回答
52 浏览

swift - Swift inout 如何在未更改时不复制回属性,以不触发对象设置器

根据文档

通过将 inout 关键字放在其参数定义的开头来编写一个 in-out 参数。in-out 参数有一个值,该值被传入函数,被函数修改,并被传回函数以替换原始值。

但是如果根本没有改变,如何不复制结果

我有一个数据库解析器,它仅在值更改时分配attr,但是,随着 inout 的行为,attr传入的总是设置(标记我的数据库对象脏和更改:/)

有没有修改的方法,所以只有在传入的属性真正改变时才设置值?

0 投票
1 回答
121 浏览

vhdl - 在 VHDL 中的 (2) 个模块之间链接 (2) 个bidr 端口

我有一个 FPGA,它接受来自两个微控制器的 8 位地址和数据总线(1 个总线用于两者)。使用 2:1 多路复用器,我的 FPGA 一次只选择一个设备输入(地址和数据),并且选择基于 FPGA 的外部信号。我还有一个单独的解码器和寄存器模块,微可以读取和写入。所以我的问题是,如何使用端口映射分配将来自多路复用器的双向输出信号链接到更高级别的解码器/寄存器双向输入模块。使用 std_logic_vector(7..0) 将不起作用,因为我收到错误“此信号连接到多个驱动程序”。我想我需要对这两者进行三态,但我不确定。看下面的图片,绿色圆圈是我试图粘在一起的。由于我是新人,暂时无法嵌入图片。

我的 FPGA 项目

0 投票
1 回答
41 浏览

ios - 为什么我的 Xcode 编译器告诉我我使用了值类型,即使我使用了类?

我有两个classes:玩家和敌人都符合protocolCharacterCharacteristicsProtocol:

他们既是references又不values像是structs;仍然当我objects像这样发送 as 参数时:

我得到错误

将“CharacterCharacteristicsProtocol”类型的值传递给 inout 参数需要显式“&”

为什么会出现这个?这不应该只发生在structs吗?

如果我按照编译器的意愿进行操作,inout并且&在适当的位置进行操作,那么除了在现在出现错误的闭包中之外

转义闭包捕获“inout”参数“characterVM”

这是它发生的地方(只是为了完成):

我搜索了如何解决此错误并获得以下建议:“将结构更改为类”...

0 投票
1 回答
50 浏览

ios - 在扩展内移动 func 时出现错误“'UIViewController' 类型的值没有成员...”

我需要移动一种在扩展中添加和删除日志视图的方法,以便将其提供给每个控制器。为此,我在原始方法中添加了一个 inout UIVew 参数,在该方法中我为视图使用了一个全局变量。不,我有这个错误

'UIViewController' 类型的值没有成员 'containerForLoading'

从中删除 selfself.containerForLoading将给出错误:

转义闭包捕获“inout”参数“containerForLoading”

在动画闭包内(见评论)整个过程都是错误的,还是我在最后一步迷路了?

这是原始视图控制器中的代码

使用这个变量

需要时以这种方式调用

0 投票
5 回答
1149 浏览

kotlin - 在 Kotlin 中,如何检查输入是否仅为字母

在 kotlin 中,如何检查输入是否仅为字母。输入可以是任何东西、aString等。IntDouble

例如