以下表达式的Swift等价物是什么:
static CGRect MYScaleRect(CGRect rect, CGFloat scale)
{
return CGRectMake(rect.origin.x * scale, rect.origin.y * scale, rect.size.width * scale, rect.size.height * scale);
}
答案 0 :(得分:5)
您的代码是纯C;没有涉及Objective-C。而且,严格地说,它不是表达。
它是没有发出符号的函数的定义(这是static
在此上下文中的作用)。因此该函数仅在当前编译单元(定义它的.c或.m文件)中可见。该功能与某些类无关。
语义Swift等价物是一个普通的快速函数,带有private
访问修饰符。
答案 1 :(得分:2)
对于这种类型的函数(实用程序),我建议使用struct扩展,但有三种方法。
自由功能:(相当于问题中的功能)
private func MYScaleRect(rect: CGRect , scale: CGFloat ) -> CGRect {
return CGRectMake(rect.origin.x * scale, rect.origin.y * scale, rect.size.width * scale, rect.size.height * scale)
}
结构扩展:
private extension CGRect {
static func MYScaleRect(rect: CGRect , scale: CGFloat ) -> CGRect {
return CGRectMake(rect.origin.x * scale, rect.origin.y * scale, rect.size.width * scale, rect.size.height * scale)
}
}
班级方法:
private class func MYScaleRect(rect: CGRect , scale: CGFloat ) -> CGRect {
return CGRectMake(rect.origin.x * scale, rect.origin.y * scale, rect.size.width * scale, rect.size.height * scale)
}
对于这种类型的功能(实用程序),我建议使用扩展名。
答案 2 :(得分:0)
如果您的方法属于某个类,则在Swiftyou中可以使用type method:
class func MYScaleRect(rect: CGRect , scale: CGFloat )-> CGRect {}
如上所述,实例方法是被调用的方法 特定类型的实例。您还可以定义方法 呼唤类型本身。这些方法称为类型 方法。您可以通过编写关键字来指定类的类型方法 方法的func关键字之前的类,并为其键入方法 通过在关键字之前写入关键字static来构造和枚举 method的func关键字。