목록전체 글 (205)
05. dart class - basic 01. class 선언 방법 멤버변수로 var 사용하지 않고 타입지정해주기 멤버변수를 불변하게 유지하고 싶을 때, final 키워드 사용 일반적으로 class 이름은 대문자로 작성하는게 좋습니다. Dart의 클래스와 타입 시스템에서 일관성을 유지하는 데 도움이 됩니다. class Player { String name = 'tom'; int xp = 1500; void sayHello() { // this.name을 해도 상관없으나, class 내부에서 this를 사용하지 않도록 권고하고있다. print("hello, my name is $name"); } } void main() { // new 생략 가능 var player = new Player(); print..
04. dart function 01. 함수 작성법 아래 sayHello를 예로 든다면, void : return 타입. 아무것도 반환하지 않으므로 void 형 sayHello : 함수의 이름 String name : 매개변수로 String 타입의 변수 name 사용 void sayHello(String name) { print("Hello $name"); } // String : 함수의 반환값이 String 형태 // => : 즉시 return 시 fat arrow 사용하여 표현 가능 (return 문 한줄일 때 괄호와 return 키워드가 => 변환) String directReturn(String name) => "Hello $name"; 02. 파라미터 positional arguments : 함..
03. dart data-type 01. 기본 자료형의 종류 문자열 String s = "this is string"; 정수형 int i = 1; 불린형 bool isLoading = true; 실수형 double money = 72.14; 모든 숫자 - 정수, 실수의 부모격 num n = 1.212; 02. List형 배열형태로 []로 감싸서 선언 var로 선언하거나, List 형식으로 선언한다. var anyNumbers = [1, 2, 3, 4, '5']; // List List numbers = [1, 2, 3, 4]; // int형 요소만 추가 가능 리스트의 Collection if 배열 내부에서 if를 사용하여서 조건에 맞으면 추가되고 아니면 추가되지 않는다. var needFive = tru..
02. dart variables 01. 변수 선언 관습적으로 클래스의 메서드나 멤버변수로 사용할 때는 타입을 지정해주고, 함수의 내부의 지역변수로 사용할 때는 var 키워드로 변수를 선언한다. 그러나 컴파일러가 타입추론을 잘 해주기 때문에 크게 상관은 없다. var name = "mike"; // (Type: String) name = 1; // (X) 타입을 지켜야 한다. String todayLunch = "toast"; var name = “mike”로 할당하게 되면 name의 타입은 String 타입이 된다. 다음 라인에서 name에 정수를 할당하려하면 에러가 난다. String 변수명 처럼 아예 타입을 지정해 줄 수도 있다. 02. 다이나믹 타입 변수 변수의 타입을 선언시에 지정해주지 않았기 ..
01. dart 실행하기 - Hello World! dart 코드 실행하기 - 두가지 방법중 선택 https://dartpad.dev/ 에서 코드를 작성하고 실행해본다. VS Code 에서 .dart 파일을 만든 후 main 함수를 작성한다. dart는 main 함수가 필요하고, main 함수를 실행함으로써 프로그램을 실행한다. main 함수가 없으면 오류 발생. 생성한 .dart 파일에 다음과 같이 작성 void main() { print("hello world"); } - 작성하면 main 함수 위쪽에 Run / Debug 표시가 있는데 Run 버튼을 클릭하거나, - 터미널에서 dart run [filename].dart로 실행한다. - 코드를 적을 때 마다 마지막에 세미콜론(;)을 꼭 뒤에 붙여야됨..
Promise.allSettled(iterable); Promise.allSettled()메서드는 주어진 모든 프로미스를 이행하거나 거부한 후, 각 프로미스에 대한 결과를 나타내는 객체 배열을 반환합니다. 일반적으로 서로의 성공 여부에 관련 없는 여러 비동기 작업을 수행해야 하거나, 항상 각 프로미스의 실행 결과를 알고 싶을 때 사용합니다. 반환된 각 객체별로 status를 확인할 수 있습니다. 만약 fulfilled상태라면 value를, rejected상태라면 reason속성을 확인할 수 있습니다. value나 reason을 통해 각 Promise가 어떻게 이행(또는 거부)됐는지 알 수 있습니다. 예시 Promise.allSettled([ Promise.resolve(33), new Promise(re..
Promise.all(iterable) 주로 배열을 인자로 받아서 인자로 받은 반복가능한 객체들을 순회하면서 비동기 작업들을 처리합니다. 입력 값으로 들어온 프로미스 중 하나라도 거부 당하면 Promise.all()은 즉시 거부합니다. 만약 비동기 작업이 아니라 의미없는 [1,2,3]와 같은 데이터를 인자로 넘겨주면 all메서드는 다음과 같은 작업을 자동으로 수행합니다. Promise.all([Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)]); 이는 내부적으로 Promise.resolve()메서드가 호출되어 인자로 전달된 값이 프로미스 객체로 변환되기 때문입니다. 빈 객체를 전달한 경우, (동기적으로) 이미 이행한 프로미스를 반환합니다. Prom..
프라미스 (Promise) 1. Promise란 무엇인가? ECMA 2015부터 표준이 되었고, 노드버전 4부터 기본적으로 사용할 수 있다. 콜백을 대신할 강력한 대안으로 발돋음 하게 된다. 프라미스는 비동기 작업의 최종적인 결과(또는에러)를 담고있는 객체 입니다. 비동기 작업이 아직 완료되지 않았을 때, Pending (대기중) 작업이 성공적으로 끝났을 때, Fullfilled (이행됨) 작업이 에러와 함께 종료 됐을 때, Rejected (거부됨) 이 때, Promise가 이행되거나 거부됐을 때, 이것을 Settled (결정됨) 이라고 부른다. Promise가 Settled 되면 이행됐거나, 거부된 결과의 관련된 에러를 받기 위해서 프라미스 인스턴스의 then() 함수를 사용할 수 있습니다. prom..
팩토리 메서드 패턴 가상 생성자, Factory Method 라고도 불립니다. 팩토리 메서드는 부모 클래스에서 객체들을 생성할 수 있는 인터페이스를 제공하지만, 자식 클래스들이 생성될 객체들의 유형을 변경할 수 있도록 하는 생성 패턴입니다. 팩토리 메서드 구성요소 제품 인터페이스 : 제품 Interface는 그 제품이 수행하는 고유한 operation을 갖고 있습니다. 제품 생성자 : 팩토리메서드를 추상클래스로 정의하고, someOperation 메서드를 갖고, 내부에서 제품을 만들고 제품과 상호작용 합니다. 특정 제품 : 제품 Interface를 상속받아서 operation 메서드를구현합니다. 즉정 제품 생성자 : 특정제품 생성자는 특정 제품에 대한 팩토리 메서드를 구현합니다. 특정제품 생성자 1이면,..
2 단계 : 땅따먹기 코딩테스트 연습 > 연습문제 > 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 예를 들면, | 1 | 2 | 3 | 5 | | 5 | 6 | 7 | 8 | | 4 | 3 | 2 | 1 | 로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행의 네번째 칸 (8)은 밟을 수 없습니다. 마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution 함수를..