function 실습문제를 풀다가 한 가지 의문이 들었다
🤔 function 대신 그냥 class를 사용하면 안 되나? 무슨 차이지?
그 차이점을 정리해 보면 기억에 오래 남을 것 같아 글을 적어보려 한다
우선 함수와 클래스의 구조를 비교해 보자
함수의 구조
TYPE functionName (parameter) {
return value;
}
void main() {
functionName(argument);
}
클래스의 구조
class className {
TYPE properties; // properties
className(this.property); // constructor
// methods
void methodName() {
method;
}
}
void main() {
className objectName = className(property);
print(objectName.methodName());
}
블로그 글을 작성하면서 구조를 정리해 보니 왜 헷갈렸던 건지 모르겠다😅
아마도 아래의 코드로 설명이 가능할 것 같다
String underscore({required String upperCamel}) {
List<String> upperCamelList = upperCamel.split('');
for (int index = 1; index < upperCamelList.length; index++) {
if (upperCamelList[index] == upperCamelList[index].toUpperCase()) {
upperCamelList[index] = '_${upperCamelList[index]}';
} else {
continue;
}
}
String result = upperCamelList.join().toLowerCase();
return result;
}
void main() {
stdout.write('문자열 입력: ');
String userInput = stdin.readLineSync()!;
String result = underscore(upperCamel: userInput).toLowerCase();
stdout.write('변환된 문자열: ');
print('$result');
}
아래의 코드에서 argument를 입력하고 result 값으로 받는 게 비슷하다고 느꼈던 것 같다
값을 할당하는 것과 객체를 만드는 것을 헷갈린 듯하다
정말 왜 헷갈렸는지 잘 모르겠다🙄
String result = underscore(upperCamel: userInput).toLowerCase();
그치만 또 헷갈릴 수 있으니 적어보려 한다🤭
class는 객체를 생성하기 위해 작성된다 해도 무방하다
따라서 class는 class라는 설계도에 따라 값을 객체에 저장하기 위해 만들어진다
그럼 function은? 이 친구는 아무것도 저장하지 못한다
그저 하라는 대로 동작을 수행할 뿐이다
// class
class Plus {
int firstNumber;
int secondNumber;
Plus(this.firstNumber, this.secondNumber);
void plusMethod() {
int plusNumber = firstNumber + secondNumber;
print(plusNumber);
}
}
// function
int plusFunction(firstNumber, secondNumber) {
int plusNumber = firstNumber + secondNumber;
return plusNumber;
}
void main() {
// class
Plus plusNumber = Plus(1, 2);
plusNumber.plusMethod();
// function
print(plusFunction(1, 2));
}
위의 코드를 보면 바로 알 수 있다
😐 아 맞아 class의 method가 function이었지?
// class의 method
void plusMethod() {
int plusNumber = firstNumber + secondNumber;
print(plusNumber);
}
// function
int plusFunction(firstNumber, secondNumber) {
int plusNumber = firstNumber + secondNumber;
return plusNumber;
}
그렇습니다 function은 class의 method와 같기 때문에 헷갈릴 수 있지만
function은 값을 저장할 수 없고 class는 instance 생성으로 값을 저장할 수 있습니다
목적이 확실히 다르답니다🤭
Share article