问题标签 [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.
swift - Swift:带有 inout-Closure 的函数
我有以下结构:
这个结构应该在这样的函数中编辑:
但是,我确实很难打电话editMyStruct(action: (inout MyStruct) -> ())
。
XCode 抛出错误:
在没有更多上下文的情况下,表达式的类型是模棱两可的
有谁知道,如何解决这个问题?
期待你的回复!
swift - 迅速将值影响到 inout 通用变量
我想用 T 变量简化这段代码,但无法成功编译。希望你能给我方法。
这是我要重写的“重复”代码:
这是我编写但未编译的代码:
对于那些做作,我得到了那些编译错误: readValue = integerValue -> 'Int' is not convertible to 'T' readValue = stringValue -> 'String' is not convertible to 'T'
有没有办法使用泛型将我的两个函数与一个独特的函数合成?
ios - 在函数中使用多个 inout 参数时应用程序崩溃
当我使用以下代码时,我的应用程序崩溃。
错误:
但是当我使用单个参数函数时,如下所示。代码正在工作
所以我的主要目标是使用带有多个参数的 inout 函数。我该怎么做或者我的代码有什么问题?
谢谢你。
ios - 将引用存储在变量 SWIFT 4 中
我将一个参数从我的 viewController 发送到 customCell。我的自定义单元格有一个 textField。在我的 viewController 中,我有一个字符串变量,用于将值存储在 textField 中,因为我将把这个值发送给休息服务。
我的自定义单元格
我的视图控制器
当我将引用发送到 customCell 时,我在 textFieldDidEndEditing 方法中丢失了引用。
swift - Swift 中“+=”运算符的内存安全
我一直在快速学习,遇到了一个关于内存安全的问题。+=
运算符在左侧接受一个参数,该inout
参数应该对整个函数调用具有写访问权限。left = right+left
它在其实现中做了类似的事情。它似乎是写入和读取访问的重叠。这怎么不违反内存安全?
编辑:根据The Swift Programming Language,它可以在一个线程中发生:
但是,这里讨论的冲突访问可能发生在单个线程上,不涉及并发或多线程代码。
详细说明:这里有两个来自The Swift Programming Language (Swift 4.1 beta) 的例子。我很困惑+=
结构中的这种自定义实现如何Vector2D
正常:
当这不是:
进一步编辑:
我认为我的问题确实是 += 作为一个函数,特别是在使用时
或使用自定义实现:
这没有任何错误。但是 func 从左侧获取一个 inout,因此对“step”具有长期写入访问权限,那么如果右侧也传入“step”,我很困惑这不是“step”的即时读取访问”与“步”的长期书写重叠。或者,当您为两个 inout 参数传入同一个实例时,这只是一个问题,而不是一个 inout 和一个常规参数?
swift - “从隐式转换至将元组作为 inout 参数传递时需要一个临时的错误
这是我的代码:
我收到此行的以下错误:
无法将不可变值作为 inout 参数传递:从“(String,Double)”到“(arg1:String,arg2:Double)”的隐式转换需要临时
swift - 为什么我不能将隐式展开的可选项作为 UnsafeMutablePointer 传递?
似乎 Xcode 9.3 确实解决了我遇到的一个问题,但在 Swift 4.1 中,这段代码的后半部分仍然无法编译:
调用inoutFunc
现在很好,但调用pointerFunc
仍然给我一个错误:
无法使用类型为“(inout SomeClass!)”的参数列表调用“pointerFunc”
或在原始上下文中:
无法传递“ActualClass”类型的不可变值?作为 inout 参数
类似于我的 Swift 4.0 问题(inoutFunc
也没有编译),如果我将声明更改为,var obj: SomeClass?
那么第二个函数调用将毫无怨言地编译。
这是另一个与隐式展开选项相关的挥之不去的 Swift 错误,还是UnsafeMutablePointer
预计这种情况不会像inout
现在的版本那样工作?有没有相对干净的解决方法?
背景:
在实际代码中,pointerFunc
调用是一个 Apple 框架函数,它要么初始化实例,要么返回错误状态。
由于我已经guard AppleFrameworkInitializer(&obj) == noErr else { /* … */ }
,我不想处理从临时可选的重新分配,或者必须不断地解开后面obj!
的所有代码。
也就是说,这似乎是隐式解包选项的合法用例,我想知道为什么我仍然不能在这里使用一个。
ios - 不能在 inout 函数中使用 SKShapeNode
所以,就像我SKSpriteNode
的 s 一样,我正在尝试创建一个函数来让我成为一个默认的物理体。
这是我DefaultBody.swift
创建的:
在这里我可以轻松调用 Sprite 版本:
但是,尽管我可以使用 来执行此操作,但SKSpriteNode
我的SKShapeNode
函数不起作用,因为我收到此错误:
这不起作用,所以如果我去掉inout
函数中的 并将其添加为返回,它现在可以工作(使用上图中注释掉的调用)
有什么理由吗,我该如何使用inout
而不是返回SKShapeNode
?
注意: aPhysicsBody
可以设置为SKShapeNode
两者都在这里显示,var
也没有let
显示,因此应该是可变的:
swift - 在 Swift 中从 NSData 读取一个 Int
我正在尝试从 Swift 中的大文件中读取数据——我不希望将整个文件读入 NSData 对象,这似乎是 Swift 想要做所有事情的方式。
我找到了使用 FileHandle 打开文件并将数据块读入 NSData 对象的代码。但我不知道如何将数据转换为正确的格式。我在网上看到的所有内容都表明这应该可以将 NSData 块转换为 Int:
但它不会编译。它说
我不明白为什么它这么说。我在项目的其他部分以同样的方式使用 data.getBytes 没有问题。从 handle.readData 返回的 NSData 对象有什么不同吗?
谢谢!
swift - 快速和参考类型的输入输出
我试图了解值和引用类型之间的区别。现在我想使用苹果指南中的功能:
如果我想使用这是函数,我将编写这段代码
我知道我们必须放入这个函数引用类型,但是 Int 是一个值类型,因此我们使用 &。
另一方面,当我尝试在交换函数中将 Int 更改为我的类时,我还必须在类的实例之前编写 &。
如果它已经是参考,为什么我必须这样做?