【发布时间】:2016-02-18 18:34:39
【问题描述】:
c 是 Swift 中的一个字符变量,我碰巧知道它包含一个从 1 到 9 的数字。我想减少存储在 c 中的数字的值,这是我能想到的最好的:
c = Character(String(Int(String(c))! - 1))
这看起来非常令人费解。有没有更好的办法?
【问题讨论】:
-
定义“更好”... :)
-
我想这是审美偏好,但是从 Character 到 String 再到 Int 到 String 最后再回到 Character 似乎不可能是最好的方法。这是一段非常丑陋的代码,写完之后,“一定有更好的方法”立即浮现在脑海。好吧,如果不是“更好”(在某种程度上这总是一个意见问题),你会怎么做呢?
-
好吧,正如你自己所说,恐怕这只是一个见仁见智的问题。如果您确定
c将永远是您所期望的,那么强制展开是合法的 - 除了外观偏好之外,我不确定接下来要改进什么......这确实是题外话。 -
使用字符串插值使其更短,但我不会说“更好”:
Character("\(Int("\(c)")! - 1)"). -
有了这么小的数据集,您可以定义一个字典,将每个字符映射到前一个字符。