05 함수

Estimated reading: 2 minutes 20 views

오토핫키 v2에서 함수(Function)함수 객체(Func Object)함수를 다루는 두 가지 방식입니다. 이 둘의 차이점을 이해하고 활용하면 코드의 재사용성, 유지보수성, 동적 호출 및 이벤트 제어가 훨씬 수월해집니다.

1. 함수 (Function)

함수(Function)특정 작업을 수행하는 코드의 집합으로, 필요할 때 호출하여 작업을 실행할 수 있는 코드 블록입니다. 함수는 동일한 작업을 여러 곳에서 반복하지 않고, 호출만으로 동일한 작업을 수행할 수 있는 도구입니다.

함수의 주요 특징

  • 코드 재사용성: 중복 코드를 제거하여 프로그램의 유지보수성을 높입니다.
  • 매개변수(Parameter): 함수에 값을 전달하여 작업의 동적 처리가 가능합니다.
  • 반환값(Return): 함수의 결과를 return을 통해 호출한 곳으로 반환합니다.

1) 함수의 기본 구조

함수이름(매개변수1, 매개변수2, ...) {
    ; 함수의 작업 내용
    return 반환값 ; (선택 사항)
}

2) 예제 1: 간단한 함수

SayHello() {
    MsgBox("안녕하세요!")
}

; 함수 호출
SayHello()

설명

  • SayHello()는 "안녕하세요!"를 출력하는 함수입니다.
  • SayHello()를 호출하면 MsgBox("안녕하세요!")가 실행됩니다.

3) 매개변수를 사용하는 함수

SayHello(name) {
    MsgBox("안녕하세요, " name "님!")
}

; 함수 호출
SayHello("홍길동")
SayHello("김철수")

설명

  • SayHello(name)는 매개변수 name을 받아서 "안녕하세요, (name)님!"을 출력합니다.
  • SayHello("홍길동") 호출 시 "안녕하세요, 홍길동님!" 메시지가 출력됩니다.

4) 반환값을 사용하는 함수

Add(a, b) {
    return a + b
}

result := Add(10, 20)
MsgBox("반환값: " result) ; 결과: 30

설명

  • Add()a와 b의 합을 반환합니다.
  • Add(10, 20) 호출 시 30이 반환되며, result 변수에 저장됩니다.

2. 함수 객체 (Func Object)

함수 객체(Func Object)함수를 객체처럼 다루는 개념입니다. 오토핫키 v2에서는 함수도 객체로 관리할 수 있습니다. 이 객체는 단순한 함수 호출을 넘어, 함수의 정보 조회, 동적 호출, 바인딩 등의 기능을 제공합니다.

함수 객체의 주요 특징

  • 동적 함수 호출: Func("함수명")을 통해 동적 호출이 가능합니다.
  • 바인딩 기능: Bind() 메서드로 특정 매개변수를 고정한 부분 함수(Partial Function)를 생성할 수 있습니다.
  • 함수의 정보 조회: 함수의 이름, 매개변수 개수, 내장 함수 여부 등을 확인할 수 있습니다.

3. Func 객체의 주요 메서드와 속성

구분 설명 예시
Call() 함수 호출 FuncObj.Call(값1, 값2)
Bind() 매개변수 고정 (Partial Function 생성) FuncObj.Bind(값1, 값2)
IsByRef() 매개변수가 ByRef로 선언되었는지 확인 FuncObj.IsByRef(1)
IsOptional() 매개변수가 선택 매개변수인지 확인 FuncObj.IsOptional(2)
Name 함수의 이름 반환 FuncObj.Name
IsBuiltIn 함수가 내장 함수인지 확인 FuncObj.IsBuiltIn
MinParams 필수 매개변수의 개수 반환 FuncObj.MinParams
MaxParams 총 매개변수의 개수 반환 FuncObj.MaxParams

1) Func 객체 생성

MyFunction() {
    MsgBox("안녕하세요, Func 객체를 학습합니다!")
}

funcObj := Func("MyFunction")
funcObj.Call() ; 결과: 안녕하세요, Func 객체를 학습합니다!

2) Call() 메서드

Add(a, b) {
    return a + b
}

funcObj := Func("Add")
result := funcObj.Call(10, 20) ; 30
MsgBox("Call() 결과: " result)

3) Bind() 메서드

Add(a, b, c) {
    return a + b + c
}

funcObj := Func("Add").Bind(10, 20)
result := funcObj.Call(30) ; 60
MsgBox("Bind() 결과: " result)

4) 속성 조회

MyFunction(a, b := 10, c := 20) {}

funcObj := Func("MyFunction")
MsgBox("함수 이름: " funcObj.Name)
MsgBox("필수 매개변수 수: " funcObj.MinParams) ; 1 (a)
MsgBox("최대 매개변수 수: " funcObj.MaxParams) ; 3 (a, b, c)

5) IsByRef() 메서드

MyFunction(ByRef a, b) {}

funcObj := Func("MyFunction")
isByRef1 := funcObj.IsByRef(1) ; true
isByRef2 := funcObj.IsByRef(2) ; false
MsgBox("1번째 매개변수는 ByRef? " isByRef1)
MsgBox("2번째 매개변수는 ByRef? " isByRef2)

6) IsOptional() 메서드

MyFunction(a, b := 10) {}

funcObj := Func("MyFunction")
isOptional1 := funcObj.IsOptional(1) ; false
isOptional2 := funcObj.IsOptional(2) ; true
MsgBox("1번째 매개변수는 옵션인가? " isOptional1)
MsgBox("2번째 매개변수는 옵션인가? " isOptional2)

함수와 Func 객체의 차이점

구분 함수(Function) Func 객체(Func Object)
정의 방식 함수이름(매개변수) { ... } FuncObj := Func("함수이름")
호출 방식 함수이름(값1, 값2) FuncObj.Call(값1, 값2)
기능 단순 호출 및 반환 동적 호출, 바인딩, 속성 조회 가능
속성 접근 불가능 Name, MinParams, MaxParams 접근 가능

정리

  1. 함수(Function)는 특정 작업을 수행하는 코드의 집합으로, 호출(Call)하여 실행합니다.
  2. 함수 객체(Func Object)함수를 객체처럼 다루는 개념으로, 동적 함수 호출, 바인딩, 속성 조회 등의 고급 기능을 제공합니다.
  3. Func() 함수를 사용하여 Func 객체를 생성할 수 있으며, Call(), Bind(), IsByRef(), IsOptional() 메서드를 통해 함수를 조작할 수 있습니다.
Subscribe
Notify of
guest
0 댓글
Inline Feedbacks
View all comments