问题标签 [protocol-oriented]
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.
python - 如何让 Mypy 在 Callable 中识别类的协议成员资格?
当协议用作类型注释函数的简单参数时,Mypy 可以正确识别类对协议的遵守情况。但是,当我有一个需要使用该协议的可调用参数的函数时,Mypy 会错过用户类的协议成员资格。
我是在滥用 Mypy 的协议模式,还是 Mypy 目前根本不支持这种模式?
(我已经看到有关 Mypy 在分配给一个类的 Callables 方面遇到问题的线程......所以这可能是一个已知的行为)
swift - 使用 Swift 协议和扩展覆盖对象方法
我想覆盖在框架中声明并在扩展中实现的方法。
这是我尝试过的:
这将打印:
但我想覆盖该方法,以便打印:
是否可以覆盖在扩展中实现的方法?
swift - 为什么不能符合关联类型的协议?
我有以下简单的协议:
函数parse
采用 simple Response
which is struct 并采用T
which is Codable
。以下是我实现此协议的方式:
似乎一切都好。但是 Xcode 说它不符合协议。这里AuthResult<T>
只是为了案例:
我无法弄清楚我的实施有什么问题。我想使用泛型函数,而不是泛型结构。
ios - swift iOS中的面向协议编程
这是Protocols
:
WireFrameProtocol
将具有所有路由功能。HomeWireFrameProtocol
将扩展并仅具有一些与家庭相关的路由。测试类继承自HomeInteractorProtocol
,它有一个 var wireFrame: HomeWireFrameProtocol
,再次HomeWireFrameProtocol
扩展WireFrameProtocol
。
是否var wireFrame: HomeWireFrameProtocol
也代表var wireFrame: WireFrameProtocol
?
swift - Swift 面向协议编程一种协议继承其他协议,其中一种实现方法
我有这样的协议
其中 IRouter 应该继承或符合 Requestable 和 Encoder 协议
MultipartUploading 是另一个具有默认实现的协议
然后我将默认实现添加到 Requestable 如果它也是 IRouter
以及 MultipartUploading 协议的另一种实现
但是如果我将模块导入应用程序目标并执行
它不包含这个 multipartFormData 和 asUrlRequest 实现,让我再次实现它们?如何避免这种情况并具有此默认实现。似乎如果我在同一个模块(目标)中执行此操作,那么 Router: IRouter 不会抱怨,但也许只是 Xcode 没有检测到错误
swift - 无法为数组参数扩展约束协议
我将通过一个例子来解释它。我们有一个强制拥有firstName
和lastName
喜欢的协议:
我们将要使用的类型有这两个,但是是可选的形式:
所以在符合 之后ProfileRepresentable
,我们将扩展ProfileRepresentable
并尝试返回值和nil
状态的默认值:
到目前为止,一切都很好
现在对于s列表也有类似的流程Profile
。
首要问题
符合ProfilerRepresentable
不会按预期自动完成实现(因为Profile
已经符合ProfileRepresentable
)
第二期
按照之前的模式,扩展ProfilerRepresentable
没有按预期工作,它会引发警告:
⚠️ 通过这个函数的所有路径都会调用自己
顺便说一句,我怎样才能实现数组的目标?
ios - 如何在 swift 中使基类属性通用,以便与多种模型类型一起使用?
我希望属性“cellViewModel”是通用的,这样我就可以将 BaseCustomCell 与不同类型的模型一起使用。前任。
//这就是我从 cellForRowAtIndexPath 方法设置的方式:
现在,我每次都为不同类型的 cellViewModel 创建新的 BaseCustomCell。您能提供任何解决方案吗?
swift - Swift Extension 计算变量在协议中声明之前无法正确读取
我有一个协议扩展,它声明并分配一个静态计算变量:
然后我有另一个名为 Providerassociatedtype
的协议,它需要 DataType 协议和扩展:
然后我创建以下符合 DataType 和 Provider 的类型:
当我打印出这个(一个空数组[]
)时,CarProvider
静态变量mock
会打印出mocks
DataType 变量的默认值——即使在其结构定义Car
中有一个分配的数组值mocks
但是,只要我将协议mocks
内的属性声明DataType
为要求,就会正确读取 的mocks
值Car
(打印正确的值:)[__lldb_expr_93.Car(name: "Nissan"), __lldb_expr_93.Car(name: "Toyota")]
:
为什么协议定义中首先需要属性定义?扩展值不应该足够吗?而且由于Car
结构将自己的值分配给mocks
变量,不应该读取它而不是默认扩展值吗?
ios - SwiftUI:使用协议定义视图外观
作为 SwiftUI 的新手,我已经看到所有 UI 组件现在都是协议或结构。
我喜欢协议的地方在于我可以在不需要继承的情况下组合它们,这与面向对象编程不同。
但是,我想知道,如何组合多个视图外观,假设我有一个BlueView
协议可以定义一个蓝色背景的视图,一个RoundedCorner
协议定义一个圆角视图。
我该怎么做这样的事情:
MyView: View, BlueView, RoundedCorner { ...
为了不必在我的应用程序的每个视图中设置这些代码行?
谢谢您的帮助
swift - 如何在协议中创建变量属性,其中一个类的 {get set} 和另一个类的 {get}
在 Stage1 类中,我需要作为 {get set} 访问“mustBeSettable”,而在 Stage2 类中,“mustBeSettable”应该只是 {get}。但我需要在两个类中使用相同的属性。