问题标签 [class-extensions]
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.
objective-c - 没有任何内容的类扩展的目的是什么?
根据开发者文档,类扩展是通过@interface
在实现文件中声明an来实现的,也可以用来将实例变量重新声明为私有。但是,我经常看到下面的代码没有声明新方法或实例变量。它的目的是什么?
swift - 您可以在不定义属性/方法的情况下在协议中强制执行类型转换吗?
我不想定义asString。
class - Swift 和使用类扩展
我不明白为什么程序员extension
在他们的类实现中使用关键字。您可以在其他主题中阅读代码在语义上更加分离等等。但是当我使用自己的代码时,使用// MARK - Something
. 然后,当您在 Xcode 中使用方法列表 (ctrl+6) 时,一切都一目了然。
在 Apple 文档中,您可以阅读:
“扩展为现有的类、结构或枚举类型添加了新功能。”</p>
那么为什么不直接在我自己的类中编写我自己的代码呢?不像我想扩展一些外国类的功能,比如NSURLSession
or Dictionary
,你必须使用扩展。
Mattt Thompson 在他的 Alamofire 库中使用扩展,也许他可以给我一点解释,为什么他选择这种方法。
objective-c - Objective-C类扩展方法的前向声明
以下代码产生错误No visible @interface for 'Bar'在以下实现的第二行声明选择器 'barMethod' -[Foo fooMethod]
:
除了将类扩展移到实现之上(有时不是很方便)之外,还有什么方法可以-[Bar barMethod]
在 FooBar.m中转发声明?Bar
Foo
objective-c - 在 Swift 中公开 Objective C 类扩展属性
假设我在 Objective C 实现文件 ( MyVC.m
) 中有以下内容:
如何将此私有属性公开给 Swift(测试)代码?以下导致编译器错误:
php - 在 PHP 中扩展类响应
我正在一个使用 mySQL 和 SQLite DB 的项目中工作。我的目标是使代码能够与两种数据库类型一起使用。我使用类开发了 mySQL 的代码,mysqli
现在我想修改它以使其也适用于SQLite3
对象。
SQLite3
mysqli
类实现与(至少,我使用的方法)相同的方法,但有时使用不同的名称。例如,mysqli::fetch_array()
变成SQLite3::fechArray()
。所以我正在扩展 SQLite3 和SQLite3Result
类来实现我需要的方法。例如:
问题是我不知道如何扩展类的响应SQLite3
以获得我自己的SQLite3Response
扩展类。我是说:
现在$res
是一个SQLite3Result
对象,但我需要它成为一个SQLite3ResultEx
对象(我自己的扩展类)。
swift - 试图从扩展类覆盖 NSView 的 drawRect
我正在用 Swift 设计一个 NSView 类扩展。在该扩展类中,我正在尝试使用此覆盖 drawRect
有一个错误指向覆盖并说Method 没有覆盖其超类中的任何方法... 带有 Objective-C (???) 选择器的方法 drawRect 与具有相同 Objective-C 选择器的先前声明冲突
什么?目标-C?我正在使用迅速。
到底是怎么回事?
swift - 需要澄清在 Swift 中对文字使用点表示法
所以我正在阅读 Swift 文档中的类扩展。我了解类扩展的目的和功能。然后,Apple 提供了如何扩展现有类型的示例:
有人可以解释为什么以及如何在浮点文字上使用点符号吗?
在上面的示例中,他们在值25.4和3上使用点符号来访问 Double 类的计算属性。Apple 没有就为什么可以做到这一点给出详尽的解释。
swift - 我可以在 Swift 中扩展最终类吗?
我正在为使用 Swift 制作的新应用程序使用第三方库。类/库的作者使用final
关键字将其设为 final,可能是为了优化和防止覆盖其属性和方法。
例子:
我是否可以在不覆盖默认值的情况下扩展该类并向其添加一些新属性和方法?
像这样:
swift - 如何在 NSDate 中为 _Incrementable 添加一致性
我正在尝试添加与ForwardIndexType
inNSDate
的一致性,以便我可以制作一个Range<NSDate>
,为了做到这一点,我必须实现public func successor() -> Self
from _Incrementable
。
我的实现非常简单,旨在说明另一个成功的日期是恰好在它之后一秒的日期,这不是这里要问的。
我得到的错误是
无法将类型“ ”的返回表达式转换
NSDate
为返回类型“Self
”
我尝试添加as Self
oras! Self
但编译器不允许我,因为在这种情况下转换 fromNSDate
总是Self
成功。替换Self
为NSDate
也不起作用。
我怎样才能以正确的方式做到这一点?