| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- scss
- riverpod
- 자바스크립트
- java
- LLM
- firebase
- printf
- java 출력
- 엡
- 앱심사
- JS
- unity
- UI/UX
- DART
- 배포
- 자바 출력 방식
- nodejs
- java 콘솔 출력 차이
- 단축키
- abap
- lifecycle
- println
- react
- Flutter
- JQ
- 자바 포맷 출력
- ListView
- Clean Architecture
- npm
- develop
- Today
- Total
목록DART (17)
guricode
이전에 Data레이어(데이터소스,임플)를 만들었다 ai챗봇모델을 셋팅하고 외부 api를 연결했다. Domain 레이어에서는 비즈니스 규칙을 만들것이다. 첫번째로 대화섹션의 핵심 모델인 챗봇 Entity를 만든다.class ChatMessage { final String role; // 'user' 또는 'assistant' final String content; final DateTime timestamp; const ChatMessage({ required this.role, required this.content, required this.timestamp, }); //(Firebase 저장용) Map toJson() { return { 'role':..
문제 내용전투 RPG 게임에서 몬스터의 공격은 매 턴 랜덤한 공격력으로 캐릭터에게 피해를 줘야 한다.그러나 실제 실행 결과, 몬스터의 공격 데미지가 처음 공격 때만 랜덤으로 생성되고 이후부터는 고정값으로 계속 들어갔다. 문제 상황게임을 플레이하면 몬스터가 처음 공격할 때는 데미지가 랜덤으로 계산된다.그러나 그 이후로는 동일한 고정 데미지가 반복된다.기대한 동작은 몬스터가 공격할 때마다 새로운 랜덤 데미지를 생성하는 것이다.원인 분석Monster(String name, int health, int maxAttack, int playerDefense) : super( name, health, Random().nextInt(maxAttack + 1), // 이게 단 한 번 실행됨 ..
콘솔 기반의 Dart 쇼핑몰 프로그램에서, 장바구니(Cart)에 동일한 상품명을 입력하면 새로운 객체가 생성되어 리스트에 계속 중복으로 추가되는 현상이 발견되었다. 배경 :장바구니에 상품을 추가하는 기능을 테스트하던 중,같은 이름의 상품을 여러 번 입력하면 장바구니에 여러 개의 같은 상품 항목이 생기는 걸 확인했다.발단 :사용자가 "Stun Gun 1"을 두 번 입력하면, 장바구니에Stun Gun x1Stun Gun x1이 두 개의 인스턴스가 생겼다.총 가격은 제대로 계산되었지만, 사용자 입장에서 보면 중복 항목이 쌓이는 불편한 UX가 생겼다.전개 :처음엔 List.contains()를 통해 중복 여부를 확인하려 했지만,Dart에서는 List.contains()가 기준으로 동작하기 때문에,Product(..
Dart에서 예외(Exception)는 프로그램 실행 중 문제가 발생했을 때 이를 알려주는 메커니즘이다. 예외를 처리하지 않으면 프로그램은 종료되지만, 적절히 처리하면 문제 없이 정상적으로 실행을 이어갈 수 있다.예외란 무엇인가예외는 프로그램 실행 중 발생하는 비정상 상황을 나타낸다.처리하지 않으면 프로그램이 중단된다.Dart에서는 Exception 클래스를 상속받아 예외를 정의한다.Exception("에러 메시지")처럼 예외 객체를 생성할 수도 있지만, 어떤 종류의 예외인지 알 수 없다.var exception = Exception("이렇게 하면 어떤 예외인지 모름");Dart에서 정의한 주요 예외들▶ DeferredLoadException필요한 시점에 로드되도록 설정된 라이브러리를 로드하지 못했을 때..
class Circle { //정적 변수,메서드는 모든 객체가 값을 공유한다 //인스턴스는 인스턴스 내에서만 공유한다. static double number = 456; //정적 변수 String myName = 'lys'; //인스턴스 변수 static void printDouble() { //정적메서드 print(number); //인스턴스 변수 사용 불가 정적변수만 사용가능 } void printMyName() { //인스턴스 메서드, 인스턴스는 this사용가능 print(myName); } //생성자도 메서드의 일종 //기본 생성자 - 매개변수가 없는 생성자 //자동으로 명시되기 떄문에 클래스에 굳이 명시하지 않아도된다. //new라는 키워드가 있어도되고..
map() + where숫자 리스트의 각 요소에 2를 곱한 후, 5보다 큰 값들만 반환하고 싶은 경우List numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];var result = numbers .map((number) => number * 2) .where((number) => number > 5);print(result); // (6, 8, 10, 12, 14, 16, 18, 20)map()으로 숫자들을 2배 처리했다.where()으로 5보다 큰 값만 필터링했다.정리필터링이 필요할 때: where() 사용각각을 변환할 때: map() 사용where() + map() + reduce()짝수만 골라 제곱한 후, 그 값을 모두 더하고 싶은 경우List numbers = [1,..
Dart에서 List, Set, Map 같은 컬렉션 타입 데이터를 다룰 때 자주 사용하는 고차 함수들이 있다. 고차 함수는 '함수를 매개변수로 받거나 반환하는 함수'로, 데이터를 가공하거나 필터링하거나 누적 처리할 때 유용하게 사용된다. 각 함수의 특징을 확인해보자. map() 각 요소에 특정 함수를 적용해 새로운 컬렉션을 반환한다.원본 데이터를 변경하지 않고, 반환되는 컬렉션의 크기는 원본과 같다.Iterable 타입으로 반환된다.예시List fruits = ['사과', '오렌지', '수박'];var delicious = fruits.map((fruit) => '맛있는 $fruit');print(delicious); // (맛있는 사과, 맛있는 오렌지, 맛있는 수박)List numbers = [1, 2..
Dart에서 헷갈리기 쉬운 개념 중 하나인 열거형(enum)! 이번 정리에서는 열거형이 어떤 친구인지, 언제 쓰는지, 실제 코드와 함께 하나씩 뜯어보자.열거형 (Enum)이란?여러 개의 고정된 상수 값을 하나의 이름 아래 묶어서 정의할 수 있는 문법열거형의 각 값들은 고유하며 순서(index) 도 가지고 있음// Color 라는 열거형을 선언enum Color { red, green, blue }// Animal 이라는 열거형enum Animal { cat, dog, tiger, elephant,}열거형의 기본 사용 열거형 값에 접근하기var myFavoriteColor = Color.blue;print(myFavoriteColor); // Color.blue switch 문에서 활용enum Co..
제네릭(Generic)Generic 은 "타입을 일반화해서 코드의 재사용성을 높이는 문법"입니다.타입에 따라 각각 함수를 만들 필요 없이, 하나의 함수나 클래스에 타입을 유연하게 지정할 수 있어요.Dart에서는 형식으로 사용됩니다. (T는 타입의 약자, 마음대로 바꿔도 됨)왜 필요한가타입마다 같은 로직의 함수나 클래스를 반복해서 만들 필요 없음더 안전한 코드 작성 가능 (타입 체크가 컴파일 타임에 이루어짐)타입 추론을 통해 가독성과 유지보수 향상📌 기본 구조T identity(T value) { return value;}void main() { print(identity(10)); // 10 print(identity('hi')); // hi}identity : 입력 받은 타입 T 그대로 ..
이번 포스팅에서는 Dart에서 자주 쓰이는 컬렉션 고차 함수들과 Map 고급 활용 방법을 예제를 중심으로 정리해봤다. 고차 함수(Higher-Order Functions)란?함수형 프로그래밍에서 자주 쓰이는 개념으로, 함수를 매개변수로 넘기거나 함수 자체를 리턴할 수 있는 함수. Dart의 컬렉션 메서드들도 대부분 이 개념을 바탕으로 만들어짐. List 고차 함수 예제1. forEach() - 요소 순회List fruits = ['사과', '바나나', '귤'];fruits.forEach((fruit) { print('맛있는 $fruit');});2. map() - 값 변환 후 새 리스트 생성List numbers = [1, 2, 3];List doubled = numbers.map((n) => n * ..