[FLUTTER] 다트 주요 라이브러리 둘러보기 - 6 / A Tour of the Dart Libraries

in #dart6 years ago (edited)

출처 : https://www.dartlang.org/guides/libraries/library-tour

  • 다트 라이브러리의 주요 기능의 사용 방법 및 예시를 볼 예정 입니다.
  • TL;DR : 최대한 내용을 요약하여 표현했습니다.
  • 좀 더 자세하고 상세한 내용을 보고 싶으시면 위 원문 링크를 참조 바랍니다.

플러터란 ? 구글에서 개발한 크로스 플랫폼 앱 개발 프레임워크며, 언어는 구글이 개발한 Dart 를 사용합니다. 안드로이드, iOS, Web, Desktop 을 지원하며 구글의 차기 OS Fuchsia의 메인개발환경이 된다고 하네요 :)

이전 글

10. dart:math

다트 : 수학 라이브러리 (API 참조)는 사인 및 코사인, 최대 및 최소 등의 일반적인 기능과 pi(파이) 및 e와 같은 상수를 제공합니다. 수학 라이브러리의 대부분의 기능은 최상위 함수(top level function)로 구현됩니다.

10.1. Trigonometry(삼각법)

Math 라이브러리는 기본적인 삼각 함수를 제공합니다

  • [참조] 1 라디안(radian) 은 원둘레 위에서 반지름의 길이와 같은 길이를 갖는 호에 대응하는 중심각의 크기로 무차원의 단위이다. 호도(弧度)라고도 하며 rad로 줄여 쓰기도 한다. 보다 일반적으로 라디안 값은 원에서의 호와 반지름의 길이의 비율과 같다.
// Cosine (코싸인)
assert(cos(pi) == -1.0);

// Sine (싸인)
var degrees = 30;
var radians = degrees * (pi / 180);

var sinOf30degrees = sin(radians);

assert((sinOf30degrees - 0.5).abs() < 0.01);

10.2. Maximum and minimum (최대최소)

  • 예시
assert(max(1, 1000) == 1000);
assert(min(1, -1000) == -1000);

10.3. Math constants (Math 관련 상수)

// 부가적인 상수들은 Math 라이브러리를 참조 바랍니다
print(e); // 2.718281828459045
print(pi); // 3.141592653589793
print(sqrt2); // 1.4142135623730951

10.4. Random numbers (랜덤수)

Random 클래스로 난수를 생성합니다. 또한 Random 생성자에 시드를 제공 할 수 있습니다.

var random = Random();
random.nextDouble(); // 0.0 ~ 1.0 사이의 숫자 반환
random.nextInt(10); // 0 ~ 10 사이 숫자 반환
random.nextBool(); // 참(true) 또는 거짓(false) 반환 

11. dart:convert - 인코딩, 디코딩, JSON, UTF-8 등

11.1. JSON 인코딩/디코딩

convert 라이브러리는 JSON 및 UTF-8 용 변환기가 있으며 추가 변환기를 만들 수 있습니다.
int, double, String, bool, null, List 또는 Map (문자열 키 포함)의 객체 만 JSON으로 직접 인코딩 할 수 있습니다. List 및 Map 객체는 재귀 적으로 인코딩됩니다.

  • jsonDecode ::: json 문자열을 json 개체로 변환
// 주의 : JSON 문자열 내부에서는 쌍따옴표(")를 사용하기 바랍니다. 홑따옴표(')
var jsonString = '''
  [
    {"score": 40},
    {"score": 80}
  ]
''';

var scores = jsonDecode(jsonString);
assert(scores is List);

var firstScore = scores[0];
assert(firstScore is Map);
assert(firstScore['score'] == 40);
  • jsonEncode ::: json 개체를 json 문자열로 변환
var scores = [
  {'score': 40},
  {'score': 80},
  {'score': 100, 'overtime': true, 'special_guest': null}
];

var jsonText = jsonEncode(scores);
assert(jsonText ==
    '[{"score":40},{"score":80},'
    '{"score":100,"overtime":true,'
    '"special_guest":null}]');

11.2. UTF-8 문자열 인코딩 디코딩

  • decode 예제
List<int> utf8Bytes = [
  0xc3, 0x8e, 0xc3, 0xb1, 0xc5, 0xa3, 0xc3, 0xa9,
  0x72, 0xc3, 0xb1, 0xc3, 0xa5, 0xc5, 0xa3, 0xc3,
  0xae, 0xc3, 0xb6, 0xc3, 0xb1, 0xc3, 0xa5, 0xc4,
  0xbc, 0xc3, 0xae, 0xc5, 0xbe, 0xc3, 0xa5, 0xc5,
  0xa3, 0xc3, 0xae, 0xe1, 0xbb, 0x9d, 0xc3, 0xb1
];

var funnyWord = utf8.decode(utf8Bytes);

assert(funnyWord == 'Îñţérñåţîöñåļîžåţîờñ');
  • encode 예제
List<int> encoded = utf8.encode('Îñţérñåţîöñåļîžåţîờñ');

assert(encoded.length == utf8Bytes.length);
for (int i = 0; i < encoded.length; i++) {
  assert(encoded[i] == utf8Bytes[i]);
}
  • UTF-8 문자의 스트림 또한 transform 을 통해 utf8.decoder 를 지정하여 활용 할 수 있습니다.
var lines = inputStream
    .transform(utf8.decoder)
    .transform(LineSplitter());
try {
  await for (var line in lines) {
    print('Got ${line.length} characters from stream');
  }
  print('file is now closed');
} catch (e) {
  print(e);
}

11.3. 다른 기능

convert 라이브러리에는 ASCII 및 ISO-8859-1 (Latin1) 용 변환기도 있습니다.

맺음말

이번 시간에는 math 와 convert 에 대해 알아 봤습니다. 지난 1달간 연재 대회를 통해 DART 언어 기초과정(4회)다트 주요 라이브러리 둘러보기(6회) 에 나눠 알아 봤습니다. 저도 첨 접하는 프로그램언어여서 아직도 많은 어색함이 있습니다. 하지만 이렇게 글로 기록하며 하나씩 예제를 따라 직접 실행도 하니, 이전과 달리 발전한 모습을 볼 수 있었던 시간이 아니였나 생각되네요 :) 앞으로도 연재대회와 별개로 flutter 및 기타 프로그래밍 언어에 대한 글을 지속적으로 기고할 예정 입니다. 많은 관심 부탁드려요 ~

  • 이전 시간에 배운 A Tour of the Dart Language 1 2 3 4 는 여유 되시면 반복 학습 부탁 드립니다. 위 내용이 학습된 상태에서 본 내용을 습득해야 이해가 빠른편인지라 ... :)

읽기 힘든 글 읽어주셔서 (또는 눈팅 이라도) 감사합니다

관련 글 링크

@flutters : 제가 작성한 글 중 fluter 관련 글만 모아서 리스팀 처리

관련글(영문)

연재글

설치/설정


aaronhong_banner.jpg

Sort:  

좋긴 한데 또 배워야 한다는 사실이 ㅇ_ㅇ 무섭군요. ㅋㅋㅋㅋㅋㅋ 아직 제대로 아는 것도 하나 못 만들었는데 ㅎㅎㅎㅎㅎㅎㅎㅎㅎ 하나라도 제대로 하고 싶습니다. ㅎㅎㅎ

그냥 느낌가는대로 해서 천천히 시작함 되죠 뭐 :)

예, ㅎㅎ 필 충만하게 달려보겠습니다. ㅎㅎ

천하제일~♩♬
행복한 ♥ 목욜 보내셔용~^^

Posted using Partiko Android