自定义字符串可转换?

大家好,首先,我要说“新年快乐”。 对于我来说,2016年确实是令人惊讶的一年。 今年发生了很多事件,但最值得注意的是,我发现了自己对编码的热情,最近我从一个了不起的编程培训Flatiron School毕业。 至少可以说,我在Flatiron的时间真的很棒。 我从来没有想过我会在3个月的时间里学到很多东西并取得很多成就。 我要向所有的老师,教职员工和我的同伙大声疾呼,以提供所有支持。 我心中知道2017年会更好。 现在是我踏上成为一名成功的开发人员并继续学习,学习和学习的旅程的时候了。

现在回到讨论的话题。 今天,我想讨论有关“自定义字符串可转换”的问题。 “自定义字符串可转换”是一种协议,可以在类型(例如类或结构)上实现,以具有声明的属性的自定义表示形式。 通过遵守此协议,代码的输出立即变得更具可读性,但更重要的是,它输出所需的信息。 Swift具有属性的默认表示形式,它将列出您定义的所有属性和值。 请看下面的代码示例:

 结构车{ 
 变量名称:字符串 
  var年:Int 
  var color:字符串 
  var new:布尔 
  } 
  let dreamCar = Car(name:“ Mustang”,年:1995,颜色:“ blue”,新功能:false) 
 打印(dreamCar) 
  //汽车(名称:“野马”,年份:1995,颜色:“ blue”,新车:false) 

在这里,我创建了Car的结构并设置了四个属性。 我还声明了一个名为dreamCar的变量,该变量从Car继承并实现其所有属性。 如您所见,当我打印dreamCar时,它列出了它的所有属性。 但是,如果我只关心汽车是否是野马,如果它是蓝色,那么我们如何才能做到这一点呢? 这是CustomStringConvertible派上用场的地方。

 结构车:CustomStringConvertible { 
 变量名称:字符串 
  var年:Int 
  var color:字符串 
  var new:布尔 
  var说明:字符串{ 
 返回“名称:\(名称),颜色:\(颜色)” 
  } 
  } 

  let dreamCar = Car(name:“ Mustang”,年:1995,颜色:“ blue”,新功能:false) 
 打印(dreamCar) 
  //名称:野马,颜色:蓝色 

是! 我们已经成功输出了我们想要的东西。 它仅列出相关的属性。 我们不需要每次都声明CustomStringConvertible,一个解决方案是在以后创建扩展。 例如:

 扩展程序汽车:CustomStringConvertible { 
  var说明:字符串{ 
 返回“名称:\(名称),颜色:\(颜色)” 
  } 
  } 
 打印(dreamCar) 
  //名称:野马,颜色:蓝色 

结果是完全一样的。 如您所见,代码的输出确实更具可读性。 希望大家都对所有初学者感到容易理解。 对于所有经验丰富的开发人员,我很想听听一些反馈,让我知道是否有我没有涉及的内容。 谢谢! 下周