首页   注册   登录
 finab 最近的时间轴更新

finab

iOS / OS X Developer
V2EX 第 58816 号会员,加入于 2014-03-23 14:17:54 +08:00
finab 最近回复了
5 天前
回复了 maxmin 创建的主题 程序员 如果看待 V2EX 站长发这种口水贴?
群号多少,有钱一起赚
@XDDD
嗯,我是说你之前举例的\(x, ...) 这种不同形式的语法糖和我说的无关

然后总结下
String(describing:obj) 与 \(obj)

使用上,obj 能做 String(describing:)的参数,就也能这样写 \(obj),反之亦然

返回值,它们也永远一样

实现,一样

然后他们语义不一样是这样嘛,你是不是在骗我😓
@XDDD
如果未实现 CustomStringConvertible,String(describing:) 与 \() 的 也是一样的,他们就是一个东西

我们不是在说的是 String(describing:) 与 \() 的语义吗?怎么老提使用 \() 做插值操作啊?- -,它们不是一个东西吧
@XDDD

我去找了下 String(describing:)的实现,仅只有一行代码

/// If `instance` conforms to the `CustomStringConvertible` protocol, the result is `instance.description`.
self = instance.description



obj.description: 你想要获取某个值的字符串形式。
String(describing:obj): 你想要得到某个值的字符串描述。

这两个代码实现上都是完全一样,语义自然一样吧

并且对于不实现 CustomStringConvertible 的类来讲,他们的行为也是一致的,实现代码也都一样

另外,对于任意 obj(实例对象、元类型等等), "\(obj)" == String(describing: obj) 结果都为 true
所以我才觉得, \() 就是 String(describing:obj) 的语法糖,语义完全完全等价


插值就另讲了,感觉和上面说的没关系啊
@XDDD
语义的话,对于实现了 CustomStringConvertible 的类来说,\(obj) 和 String(describing:obj) 语义是一样的吧
我觉得这只是个语法糖,它们应该是语义相同语法不同而已,实际等价。 因为很明显,它就是对实现了 CustomStringConvertible 的对象调用了 objc.description 而已
我特意去搜了搜 \() 细节,但是没有找到,如果他们有啥区别还望指教一下,
@mxalbert1996 喔,明白,但我其实是回另外一个人的 “唯一正确的方法是使用 String(describing:obj)” ,

之前已经有人说了 “\(obj)” ,但是他说 到他那为止,还没人说出正确方法, 唯一 正确的方法是 String(describing:obj),
然后我回复
难道 "\(obj)" 不是相当于 String(describing:obj) 么, 怎么"\(objc)" 就不是正确的方法
@mxalbert1996 然后呢?
17 天前
回复了 agee 创建的主题 投资 现在想买点腾讯或者阿里股票,求建议!
@finab 当然,暴涨的都是模拟盘 ...
我当时入金时间到账太慢,入金那几天暴涨,就错过了。。然后目送腾讯涨到这个点,现在也不想买了
17 天前
回复了 agee 创建的主题 投资 现在想买点腾讯或者阿里股票,求建议!
上次跟着 V 站大佬梭哈腾讯,目前涨了 10%
@XDDD
@mxalbert1996
难道 "\(obj)" 不是相当于 String(describing:obj) ???
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2054 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 11ms · UTC 10:46 · PVG 18:46 · LAX 03:46 · JFK 06:46
♥ Do have faith in what you're doing.