可以使用扩展为现有的 Swift 对象类型添加扩展,如语言规范中所述。
因此,可以创建扩展,例如:
extension String { var utf8data:NSData { return self.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)! } }
但是,包含此类扩展名的 Swift 源文件的最佳命名实践是什么?
过去,惯例是使用extendedtype+categoryname.mObjective-C 类型,如Objective-C 指南中讨论的那样。但是 Swift 示例没有类别名称,并且调用它String.swift似乎不合适。
extendedtype+categoryname.m
String.swift
所以问题是:给定上面的String扩展名,swift源文件应该叫什么?
String
我见过的大多数示例都模仿了 Objective-C 方法。上面的示例扩展将是:
String+UTF8Data.swift
优点是命名约定可以很容易地理解它是一个扩展,以及正在扩展哪个类。
using Extensions.swiftor even的问题StringExtensions.swift在于,如果不查看文件内容,就无法通过文件名推断文件的用途。
Extensions.swift
StringExtensions.swift
使用xxxable.swiftJava 使用的方法适用于仅定义方法的协议或扩展。但是同样,上面的示例定义了一个属性,因此在UTF8Dataable.swift语法上没有多大意义。
xxxable.swift
UTF8Dataable.swift