日記
休日が実質残り1日しかないので泣きそう.そういえば右上のはてなのロゴが変わってる.
今日書いたコード
struct Size { var width = 0.0, height = 0.0 } struct Point { var x = 0.0, y = 0.0 } struct Rect { var origin = Point() var size = Size() init(center: Point, size: Size) { let originX = center.x - (size.width / 2) let originY = center.y - (size.height / 2) origin = Point(x: originX, y: originY) self.size = size } } struct AnotherRect { var origin = Point() var size = Size() } extension AnotherRect { init(center: Point, size: Size) { let originX = center.x - (size.width / 2) let originY = center.y - (size.height / 2) self.init(origin: Point(x: originX, y: originY), size: size) } } print(Rect().origin) // Missing arguments for parameters 'center', 'size' in call print(AnotherRect().origin)
初めて知ったこと
定義の中にカスタムイニシャライザを書くとデフォルトイニシャライザは提供されなくなるが,extension
の中で書くと提供される.