inflearn logo
강의

Course

Instructor

The Complete Guide to Swift5 for iOS Development

Operator Methods

이렇게 구현하는거 맞나요?

Resolved

292

twosom

69 asked

0

자바랑 자바스크립트만 할 줄 알고 스위프트는 살짝 해본게 전부인데, 생각보다 쉽지 않네요 

마지막에 내주신 문제 += 에 대한 연산 메소드에 대해서 구현해봤는데 이렇게 하는게 맞나요?

extension Point {

    static func +=(p1: inout Point, p2: Point) -> Point {

        let ret = p1

        p1.x += p2.x

        p1.y += p2.y

        return ret

    }

}

var point1 = Point(x: 1.0, y: 2.0)

let point2 = Point(x: 3.0, y: 4.0)

point1 += point2

point1

일단 결과값으로 x, y 각각 4.0, 6.0 이 나와서 잘 작동하는것 처럼 보입니다.

그리고 inout은 값의 변화가 있는 파라미터에만 넣어주면 되는거 맞죠?

좋은 강의 감사합니다.

swift ios

Answer 2

1

twosom

extension Point {

    static func +=(value1: inout Point, value2: Point){

        value1.x += value2.x

        value1.y += value2.y

    }

}

var p6 = Point(x: 1.0, y: 2.0)

let p7 = Point(x: 3.0, y: 4.0)

p6 += p7

p6

이렇게 구했습니다. inout 파라미터인 value1 의 값만 수정되도록 하면 되는거군요! 근데 모르고 - Void 를 적지 않았는데도 동작하는것 보니 Swift 에서 리턴 타입이 Void 인 경우 생략해도 되나봐요!

1

KxCoding

안녕하세요 :) 

a += b 연산의 결과는 a = a + b 와 같고, 할당 연산자로 분류됩니다. Swift에서 할당 연산자는 연산 결과를 리턴하지 않습니다. 그래서 

var a = 12
let r = a += 34

이 코드를 실행해 보시면 r의 타입은 Int가 아니라 Void입니다.

도전과제 역시 리턴 값을 사용하지 않고 inout 파라미터를 통해 값을 업데이트하도록 구현하셔야 합니다. p1 파라미터를 활용해서 동일한 결과를 얻도록 수정해 보시기 바랍니다.

0

twosom

감사합니다! 다시한번 구현해보도록 하겠습니다

Closures syntax Optimization 부분 contains 문제

0

397

1

2강, 3강

0

342

1

UI가 너무 다른것같아요;

1

339

1

강의 Optional Chaining에서 질문있습니다

0

306

1

질문

0

304

1

if랑 옵셔널 사용했는데 뭐가 잘못된걸까요? 똑같이 인덱스 범위 벗어난다고하네요

0

370

1

내장함수에 클로져 적용 이해가 잘 안됩니다.

0

310

1

선생님 질문드리겠습니다.

0

320

1

혹시 스위프트 최근 버전에서는 가변 파라미터 2개 사용할 수 있나요?

0

391

1

샘플 파일 형식이

0

357

1

xcode12 에서 #1쪽에 입력한 g2에서 에러가 발생하지 않습니다

0

266

1

insert 와 replace

0

236

1

정규 표현식 오류

0

266

1

drop while 문제

0

278

1

insert 컴파일러 오류

0

293

2

capitalized 오류

0

327

2

Index(_rawBits) 출력 문제

0

369

2

컴파일러 오류

0

367

2

iOS 템플릿에 Single View App이 뜨지 않아요.

0

288

1

에러 메세지가 떳습니다 ㅠㅠ

0

177

1

Size관련 문장에서...

0

172

1

버전이 달라서 진행에 어려움이 있습니다.

0

261

2

안녕하세요 강의 잘 듣고있습니다

0

192

1

구구단 구현에 대해서

0

265

1