问题标签 [swift-protocols]
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 多态闭包调度
我有一个案例,我想向服务注册一个参数或不注册参数闭包。总是有一个可用的参数,但为简洁起见,我希望能够不注册任何 arg 闭包,然后在这种情况下只调度没有可用参数的闭包。来自强大的 OO 和动态类型背景,我们喜欢多态调度和类继承树并让类型自己弄清楚,我可以将以下内容放在一起:
所以我在我的控制台中42
看到了。something happened
伟大的。
但我想探索用struct
and/or来做这件事enum
。价值语义风靡一时。我认为这种enum
方法相对简单:
做一个struct
方法,我的理解是我应该使用协议来捕获publish(value:T)
. 但这就是事情变得混乱的地方,因为协议显然不能与泛型混合?我试过了:
这只会在底部产生很多错误。我曾尝试将扩展作为泛型(例如extension NullaryAction<T>:Action
),但它告诉我这T
是未使用的,即使我已将typealias
表达式放在扩展中。
是否可以使用结构/协议来做到这一点?我对枚举解决方案感到满意,但很失望我无法通过结构/协议方法实现它。
swift - 使用 Container 在 Swift 中查看另一个 ViewController 时通过协议传递数据
我开始研究这个问题应用程序。我从 tableView 的类别开始:
对于数据交换,我决定使用一个协议:
在第一个 ViewController 中有以下代码:
在第二个 ViewController(Container 中的 tableView)中有如下代码:
对我来说,显然没关系。但是模拟器上什么也没出现。
我的问题是:如果容器用来呈现另一个 viewController 作为通过协议传递数据应该做吗?
swift - Class-internal Protocols in Swift
How can I implement class-internal protocols in Swift?
The problem is that
results in the error
Declaration is only valid at file scope
Any ideas for bypassing the problem?
Exclusion: I do not refer to class-only protocols, which is possible, of course.
swift - 从协议扩展实例方法中读取静态变量
假设我们有一个 Swift 协议:
有没有办法someString
像这样从扩展实例方法访问?
我得到一个编译器错误:
静态成员“someString”不能用于“Self”类型的实例
有没有办法做到这一点?
swift - 两种协议的协议类型约束
我在 swift 2 中设置了以下两个协议
- 生成(因为没有更好的名字),它包含一个项目数组并提供类似数据源的功能,如计数和下标
因此,如果一个对象同时实现了 Generative 和 Selectable ,那么我希望它能够返回选定的索引,所以我编写了这个函数:
由于某种原因,链接器会打印出:
由于信号,命令失败:分段错误:11
不知道为什么,我想不出另一种方法来指定这个函数来处理实现协议及其关联类型匹配的对象......有什么想法吗?
PS Gist 中的代码:https ://gist.github.com/edwardIshaq/715b0e134fb47d2e28cc
------- UPDATE 删除计算属性似乎可以解决问题:
swift - Swift 中容器视图和 ViewController 之间的委托
我之前问过这个问题,我得到了他所寻求的解决方案。现在,我需要放大我的问题。使用委托,如何创建一个委托给 ViewController 将数据发送到 ContainerView 和 ContainerView 将数据发送到 ViewController?
swift - Swift 2:如何在协议中函数的默认实现中引用元素的类型
我需要从 REST API 获取一些对象并使用 ObjectMapper 将它们映射到本地对象。
这些对象包含许多枚举。它们都以整数形式出现,我想将它们映射到本地描述的枚举。
为此,我必须描述 ObjectMapper 使用的标准转换函数。
问题是我有许多这样的枚举,并且函数在所有枚举中都是完全相同的,除了TransformOf<..>
列表中的第一个参数是特定于每个枚举的。
我想要做的是创建一个具有该功能的默认实现的通用协议,例如
...然后将具有实现的协议应用于我拥有的所有枚举。
显然 reference ofself.Type
在那里不起作用,我只是不知道如何一般地引用最终将使用该函数的特定实例的类型?可能我在想解决这个问题的错误方法。
ios - 为什么我不能在 Swift 中使用 let in 协议?
我对 Swift 中关于var和关键字 { get set }的使用的协议有疑问。
从苹果文档:
如果协议要求属性是可获取和可设置的,则该属性要求无法通过常量存储属性或只读计算属性来满足。如果协议只要求属性是可获取的,那么任何类型的属性都可以满足该要求,并且如果这对您自己的代码有用,那么属性也是可设置的也是有效的。
属性要求总是声明为变量属性,前缀为 var 关键字。可获取和可设置属性在其类型声明后通过写 { get set } 表示,而可获取属性通过写 { get } 表示。
我不明白为什么我不能使用let。协议中只有get的var不只是let吗?
像这样的东西:
这不仅仅是:
我错过了什么?