比较来自世界各地的卖家的域名和 IT 服务价格

我如何在结构中划分 Swift?

struct MyRect : CGRect {...}


这一点是可能的 swift 结构的子类?

我已经在官方网站上找到了 Apple 例子:
此示例扩展了结构 CGRect, 要包含计算区域的属性:


extension CGRect {
var area: CGFloat {
return width * height
}
}
let rect = CGRect/x: 0.0, y: 0.0, width: 10.0, height: 50.0/
let area = rect.area


如何定义结构的子类 ?
已邀请:

詹大官人

赞同来自:

它不可能子类
struct

在 Swift, 只能分为仅子类的类。
extension

- 它不是子类 , 它只是向现有的其他功能添加了其他功能
struct

, 这与类别相当 Objective-C.

请阅读
https://developer.apple.com/li ... -ID82
, 读到差异之间的差异
struct


class

.

莫问

赞同来自:

这是一个小小的,但我遇到了他,并认为我会阐明我必要时使用的一般模板。 例如,我工作的应用需要一些工作 AspectRatios. 好吧,在我看来, AspectRatio - 这没什么,但 CGSize 有一些额外的功能。 我想分开一点 AspectRatio 经过 CGSize, 所以我创造了 TypeAlias, 然后创建了一个扩展 TypeAlias.

类似的东西:


public typealias AspectRatio = CGSize

public extension AspectRatio {
enum Orientation {
case landscape
case portrait
case square
}
static let square = AspectRatio/width: 1.0, height: 1.0/
static let standard = AspectRatio/width: 4.0, height: 3.0/
static let wideScreen = AspectRatio/width: 16.0, height: 9.0/
static let theater = AspectRatio/width: 21.0, height: 9.0/
static let imax = AspectRatio/width: 1.9, height: 1.0/

func aspectRatio/precision: Int? = nil/ -> CGFloat {
let aspectRatio = width / height

guard let precision = precision else {
return aspectRatio
}

let multiplier = pow/10, Double/precision//

let value = /Double/aspectRatio/ * multiplier/.rounded// / multiplier
return CGFloat/value/
}

var orientation: Orientation {
switch self.aspectRatio// {
case let aspect where aspect > 1.0:
return .landscape
case let aspect where aspect < 1.0:
return .portrait
default:
return .square
}
}

func flipped// -> AspectRatio {
return AspectRatio/width: height, height: width/
}
...
}


然后我很容易确定这些变量:


var aspectRatio: AspectRatio = .imax

窦买办

赞同来自:

以。。。开始 Swift 5.1 现在,您可以做与您所遇到的类似的事情:使用该组合物
KeyPath


dynamicMemberLookup

. 看:
https://medium.com/%40acecilia ... 6054e

要回复问题请先登录注册