问题标签 [convenience-methods]

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 回答
339 浏览

swift - 方便 vs 多个初始化 Swift

我在这里阅读了对类似问题的回复,但我仍然对这里的最佳实施方式、原因以及有什么不同感到困惑。

在这个实现中,我有两个类的初始化器

创建实例时,我可以选择其中一个。如果我选择第二个,我将默认国籍设置为加拿大

如果我用下面的便利初始化器替换第二个初始化器,

我可以以相同的方式创建相同的实例并获得相同的结果。那么区别是什么呢?我发现很难找到一个好的示例,其中便利初始化程序是完成创建类的特定实例的唯一方法,而第二个初始化程序无法像我在第一个示例中所做的那样完成。

0 投票
0 回答
48 浏览

git - 如何在`git add -p`期间刷新块的差异

git add在使用补丁模式( )暂存文件时,-p我有时会发现一个我想纠正的错误,然后再继续添加进一步的更改。

提示了许多可能的选项:conf yrmplu nksplitedit等。

但是我看不到任何重新读取文件并刷新差异的方法,因此我可以看到新的更新更改,我可能同时进行了这些更改。

通常我需要使用qgit -add并重新运行它(最终不得不重新跳过所有最终的块,以便最终再次回到我在之前编辑的块git add -p)。

是否有任何(本机或人工)方法可以使该过程更方便并刷新差异?

0 投票
2 回答
173 浏览

swift - 使用 Swift 为 Decodable 类型创建通用数据初始化器

在类扩展中从数据中解析 MyResponse 的正确方法是什么?

我尝试了以下操作,但出现错误“无法赋值:‘self’是不可变的。无法将‘MyResponse’类型的值赋值给‘Self’类型。”

0 投票
0 回答
51 浏览

swift - 将 Swift 便利初始化程序公开为 Objective-C 工厂构造函数

我正在尝试使新的 Swift 版本的库源代码与旧的 Objective-C 版本的库兼容。

我知道如果一个 Objective-C 便利初始化器和 Objective-C 工厂构造器都采用相同的参数,那么只有其中一个被导入到 Swift API 中。例如:

都导入为Foo(bar: String),并且通过某些标准,其中一个是选择的(我认为遇到的第一个)。

但是,反过来说,@objc convenience init(bar: String)Objective-C 仅作为initWithBar:(NSString *)bar.

我的遗留 API 只有工厂构造函数,所以我需要公开它。我想出的最接近的是@objc static func foo(bar: String) -> Foo. 这似乎有效。

我对这种方法有两个担忧:

  1. 关于 Objective-C 到 Swift 的桥接是不对称的
  2. 它返回一个拥有的引用,其中 Objective-C 工厂构造函数的约定是返回一个自动释放的引用。

静态函数在这里是正确的方法吗?