[Dart] Function과 Class의 차이점

Aug 14, 2024
[Dart] Function과 Class의 차이점
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

1hyoeun3