标签: customstringconvertible

Swift相当于Java toString()

什么是Swift等效的Java toString()来打印类实例的状态?

string tostring ios swift customstringconvertible

72
推荐指数
4
解决办法
3万
查看次数

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

Apple\xe2\x80\x99s 文档CustomStringConvertible

\n\n
\n

description不鼓励直接访问 type\xe2\x80\x99s属性 [\xe2\x80\xa6]。

\n
\n\n

为什么?

\n\n
\n\n

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

\n\n
func dontPrintNil(_ s: String?) {\n   if s == nil {\n        print("placeholder")\n    } else {\n        print(s!)\n    }\n}\n\nlet s: String? = nil\n\ndontPrintNil(s)                          // \xe2\x86\x92 placeholder\ndontPrintNil(s?.description)             // \xe2\x86\x92 placeholder\ndontPrintNil(String(describing: s))      // \xe2\x86\x92 nil\ndontPrintNil("\\(s)")                     // \xe2\x86\x92 nil\n
Run Code Online (Sandbox Code Playgroud)\n

string swift option-type customstringconvertible

6
推荐指数
1
解决办法
330
查看次数

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

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

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

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

人们使用协议有什么特别的原因吗?是为了您的代码安全还是出于其他原因?

例如:

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

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

先感谢您!

protocols swift swift-protocols customstringconvertible

1
推荐指数
1
解决办法
2431
查看次数