반응형
질문
Function에 매개 변수를 전달하여 VoidCallback을 전달하는 것이 가능한가요?
예를 들어 다음과 같은 것이 있을까요:
class MyClass {
void doSomething(int i){
}
MyOtherClass myOtherClass = new MyOtherClass(doSomething);
}
class MyOtherClass {
final VoidCallback callback(int);
MyOtherClass(this.callback);
callback(5);
}
답변
VoidCallback
의 선언은 다음과 같습니다.
typedef void VoidCallback();
이는 인자가 없고 유용한 값을 반환하지 않는 함수의 타입입니다. 이것이 원하는 것은 아닌 것 같습니다. 프로그램이 구문적으로 유효하지 않기 때문에 정확히 무엇을 원하는지는 분명하지 않지만, 다음이 도움이 될 수 있습니다:
class MyClass {
static doSomething(int i) { /* ... */ }
MyOtherClass myOtherClass = new MyOtherClass(doSomething);
}
class MyOtherClass {
final void Function(int) callback;
MyOtherClass(this.callback);
void callCallaback() { callback(5); }
}
여기서 callback
필드의 타입을 하나의 정수 인자로 호출할 수 있고 유용한 값을 반환하지 않는 함수의 타입으로 정의합니다. doSomething
메소드는 그 타입을 가지므로 callback
에 할당할 수 있습니다.
함수의 이름을 지정하기 위해 typedef를 사용할 수도 있습니다:
typedef Int2VoidFunc = void Function(int);
// 또는: typedef void Int2VoidFunc(int arg);
class MyOtherClass {
final Int2VoidFunc callback;
MyOtherClass(this.callback);
void callCallaback() { callback(5); }
}
효과는 정확히 동일하지만 함수 타입에 더 짧은 이름을 사용할 수 있도록 하지만, 그것은 많이 사용할 경우에만 의미가 있습니다.
반응형
댓글