问题标签 [customstringconvertible]

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 投票
4 回答
45528 浏览

ios - Swift 等价于 Java toString()

toString()打印类实例状态的 Swift 等价物是什么?

0 投票
0 回答
251 浏览

swift - 为什么不鼓励访问 CustomStringConvertible 的描述?

苹果的文档CustomStringConvertible

不鼓励直接访问类型的description属性 […]。

为什么?


下面是一个示例,其中 usingdescription对我来说似乎很有用。否则我将如何获得相同的结果?

0 投票
1 回答
350 浏览

swift - 为什么 CustomStringConvertible 协议描述被多次调用?

我在 iOS 操场上写了一个结构,想自定义它的打印格式。

结果是

在此处输入图像描述

我无法理解,即使我print只打了一次电话,但y in the range消息却被打印了 4 次。

0 投票
2 回答
72 浏览

swift - 在 UITableView 中使用 CustomStringConvertible

我已经声明了以下内容:

我想将此信息输入到 中UITableView,特别是在 中tableView:cellForRowAtIndexPath:

比如这样:

我该怎么做?我想不通。

非常感谢!

0 投票
1 回答
1082 浏览

swift3 - 枚举中的 CustomStringConvertible

我在课堂上有以下枚举。

当我尝试使用以下代码时,编译器会抱怨以下错误。

无法将“属性”类型的值转换为预期的元素类型“字符串”

“CustomStringConvertible”协议不应该返回“描述”吗?上面的代码有什么问题?

0 投票
1 回答
65 浏览

url - 覆盖 URL 描述

最初我尝试使用这样的东西:

修复编译器警告代码后变为:

print(fileURL)仍然显示带有百分比的旧 URL 描述。

0 投票
2 回答
92 浏览

swift - 有没有办法根据最终都可以由特定类型表示的参数类型来简化这个“重载矩阵”?

我们正在尝试创建一个addQueryItem最终在内部使用字符串和可选字符串的函数。

为了在 API 中获得更大的灵活性,而不是String用于参数类型,我们改为使用CustomStringConvertible(String 实现的),因此我们可以使用任何可以表示为字符串的东西。

此外,因此我们可以传递String基于 it 的枚举,我们还希望它接受自身为 a 的RawRepresentable类型。RawValueCustomStringConvertible

然而,由于我们现在在技术上接受每个参数的两种不同类型的值,我们最终不得不为这两种类型的每种组合创建一个“重载矩阵”——总共四个。

我的第一个想法是通过扩展来使用面向协议的编程,RawRepresentable因此CustomStringConvertible如果它RawValue也是一个CustomStringConvertible. 然后我可以直接将它传递给接受两个CustomStringConvertible参数并消除其他三个参数的版本。但是,编译器不喜欢它,因为我正在尝试扩展协议,而不是具体类型。

由于无法执行上述操作,如前所述,我必须具备以下所有四个:

那么,既然看起来不可能RawRepresentable坚持CustomStringConvertible,还有其他方法可以解决这个“重载矩阵”问题吗?

0 投票
3 回答
3161 浏览

swift - 我何时以及为什么要在 Swift 中使用协议?

所以我遇到了协议的主题,我在互联网上搜索了很多答案,但我找不到一个,至少一个解决了我的问题。

所以我明白协议是方法、属性等的“蓝图”,它可以在类或结构中实现,并且它需要符合其要求等,但为什么要使用呢?

我的意思是你也可以在结构本身内创建一个函数。编写协议似乎有点麻烦,然后为了实现所述协议,这次您必须使用更多代码再次编写所有需求。

使用协议是否有特殊原因?是为了您的代码安全还是出于其他原因?

例如:

在 swift 中,您拥有 CustomStringConvertible 协议,该协议具有必需的计算属性来控制自定义类型如何表示为可打印的字符串值,但您也可以在类中创建一个函数来解决这个问题。您甚至可以在不实现此协议的情况下拥有与此协议相同的计算属性。

因此,如果有人可以对这个主题有所了解,那就太好了。

先感谢您!

0 投票
0 回答
56 浏览

swift - 为任何 Object 自动生成 CustomStringConvertible 实现

我必须写很多这样的代码:

有没有自动合成这种重复代码的好方法?

0 投票
1 回答
97 浏览

swift - 如何解决 CustomStringConvertible 的重叠一致性

根据John Sundell的这篇文章,我有以下结构:

它可以是StringInt。为了能够简单地打印它(无需使用.rawValue),我添加了以下扩展:

问题是,它只适用于符合 CustomStringConvertible 的扩展,而另一个被忽略。而且我不能将一致性添加到其他扩展,因为它们会重叠。