[Swift] function vs method

function.. 너.. 뭐.. 돼..?

naljin
5 min readJun 2, 2022

replaceSubrange(_:, with:) 문서를 보다가 눈에 띄인 하나의 함수..

var nums = [10, 20, 30, 40, 50]
nums.replaceSubrange(1...3, with: repeatElement(1, count: 5))

with 안에 인자로 들어가는 repeatElement(1, count: 5) 는 뭔데 저렇게 맥락 없이 바로 호출할 수 있는거람..?

공식 문서를 찾아가보자 ㄱㄱ

흠냐리 흠냐.. Collections 안에 있군..?

그럼 뭐 Array.repeatElement(1, count: 5) 처럼 앞에 . 이라도 찍고 사용해야하는거 아니여??

요 함수가 맥락에 관련없이 냅다 repeatElement(1, count: 5) 처럼 사용할 수 있다는걸 문서에서 어떻게 알 수 있는건데??

흠.. 다른 애들은 문서에서 어떻게 보이나 확인해보자

Instance method

var nums = [10, 20, 30, 40, 50]
nums.replaceSubrange(1...3, with: repeatElement(1, count: 5))

인스턴스 생성 후에 . 찍고 사용가능한 애들은 Instance Method 라고 나오는군

Type method

Int.random(in: 1..<100)

인스턴스 생성없이 타입에서 바로 . 찍고 접근 가능한 애들은 Type method 라고 나오고

Function

max(1,2)
type(of: 1)

오..? 맥락 없이 냅다 사용할 수 있는 애들은 Function 이라고 나오네..??!

뭔가 옛날 옛적에 method 는 타입 안에 있는 거고, function 은 그게 아닌거라고 들은 것도 같고…?

분명 이런건 이론 초반에 들었을 텐데 내가 기억할리 없지 ㅎㅎ ㅎㅎ

튼 키워드는 대충 잡은거 같으니 구글링 ㄱㄱ

문서 바로 나오구요? ㅜ

Methods are functions that are associated with a particular type.

function 중에서도 struct, enum, class 등 특정 type 과 관련된 function을 method 라고 부르는구만

그래서 모든 method 는 function 이지만! 모든 function 은 method 가 아닌! 요런 느낌!

결국 repeatElement 는 method 가 아닌 function 이어서 . 안찍고 맥락 없이 호출 가능한거였고, 이렇게 쓸 수 있다는걸 문서에서는 Generic Function 으로 유추할 수 있었던거였슴!

역시 내가 몰랐을 뿐 모든게 나와있는 문서~

오늘도 신기했다~ 그럼 20000!

참고

--

--