2020/11/30 Dart : dart:math – math and random,の訳

dart:math – math and random

dart:mathライブラリ(APIリファレンス)は、正弦(sine)と余弦(cosine)、最大と最小、円周率eなどの定数などの一般的な機能を提供します。mathライブラリのほとんどの機能は、トップレベルの関数として実装されています。

mathライブラリを使用するには、dart:mathをインポートします。

import 'dart:math';

Trigonometry

(三角関数)

mathライブラリは、基本的な三角関数を提供します。

// Cosine
assert(cos(pi) == -1.0);

// Sine
var degrees = 30;
var radians 

2020/11/29 Dart:Iterable collectionsの訳

このコードラボでは、Iterableクラスを実装するコレクション(ListSetなど)の使用方法を説明します Iterablesは、あらゆる種類のDartアプリケーションの基本的な構成要素であり、気付かないうちにすでに使用している可能性があります。このコードラボは、それらを最大限に活用するのに役立ちます。

このコードラボを最大限に活用するには、Dart構文の基本的な知識が必要です。

このコードラボは、次の資料をカバーしています。

  • Iterableの要素を読み取る方法。
  • Iterableの要素が条件を満たすかどうかを確認する方法。
  • Iterableのコンテンツ(要素)をフィルタリングする方法。
  • Iterableのコンテンツ(要素)を別の値にマップする方法。

What are collections?

コレクションはオブジェクトの集合を表現するオブジェクトです。集合の一つ一つを要素(elements)と呼びます。イテラブル(iterable)はコレクションの一種です。

コレクションは空である(要素が無い)可能性があります。複数の要素を含んでいる可能性もあります。目的に応じて、コレクションの構造と実装は異なります。これらは、最も一般的なコレクションタイプの一部です。

  • リスト:要素をインデックスで読み取るために使用されます。
  • セット: 1回だけ発生する可能性のある要素を含めるために使用されます。
  • マップ:キーを使用して要素を読み取るために使用されます。

What is an Iterable?

イテラブル(Iterable)は、順次アクセスできる要素のコレクションです。

Dartでは、Iterableクラスは抽象クラス(abstract class)です。抽象クラスはインスタンス化できませんので、Iterableクラスを直接インスタンス化することはできません。

しかし、ListやSetを生成することで、Iterableを生成することはできます。

List,SetはIterableです。ですからListやSetはIterableクラスと同じメソッドやプロパティを有しています。

マップ(Map)はその実装に応じて、内部で異なるデータ構造を使用します。たとえば、HashMapは、要素(…

2020/11/24 Asynchronous programming: streamsの訳

ポイントは何ですか?

  • ストリームは、データの非同期シーケンスを提供します。

  • シーケンス:複数のデータの連続(のような意味)

  • データシーケンスには、ユーザーが生成したイベントとファイルから読み取られたデータが含まれます。

  • streamを進める方法として「await forを使う方法」と「StreamAPIのlisten()メソッドを使う方法」があります。

  • ストリームは、エラーに応答する方法を提供します。

  • ストリームには、シングルサブスクリプションとブロードキャストの2種類があります。

Dartの非同期プログラミングはFutureクラスとStreamクラスを使用します。

Futureは即時に完了しない(時間がかかる)計算(とその結果)を表現します。通常の関数が結果を返すのに対し、非同期関数はFutureを返します。

Futureは最終的には結果の値(あるいはエラー)を返します。futureは結果がいつ返ってきたかを教えてくれます。

streamは複数の複数の非同期イベントの連続を表現します。streamは非同期なイテラブルのようなものです。

要求したときに次のイベントを取得する代わりに、準備ができたときにイベントがあることをストリームが通知します。


Receiving stream events

streamを生成する方法はいくつもありますが、それについては他の記事で説明します。

streamを生成する方法に対して、streamを使用する(結果を受け取る)方法は一つです。

await for(asynchronous for loop)を使って、streamのイベントをイテレート(一つずつ順番に処理する)します。例えば、

Future<int> sumStream(Stream<int> stream) async {
  var sum = 0

2020/11/18 Pythonインストール

https://www.python.org/downloads/mac-osx/

上記ページで最新バージョンのインストーラーをダウンロードします。

「続ける」ボタンを押します。


「続ける」ボタンを押します。

「続ける」ボタンを押します。


「インストール」ボタンを押します。

インストール終了で

Macintosh HD/アプリケーション

ディレクトリにPython3.9がインストールされました。

 

 

 

 

 

🕶2020/11/17 Immutable Data Patterns in Dart and Flutter要点まとめ

 

Immutable(不変)データとは、初期化後の変更ができないデータ。

文字列(String)、数値(int,doubleなど)、bool値(boolean)の値は変更することができない。

String型として型注釈(型推論)された変数には、文字列(データ)が格納される訳ではない。

文字列データのメモリの場所への参照が格納される。

と言っている。筆者はGDEみたい。こういうの公式ドキュメントにあるのだろうか。無い場合言語仕様見ればあるのだろうか。

final変数でない変数は再代入が可能であり、再代入された変数はその文字列データを指し示すようになる。しかし一度生成された文字列データ自体(の内容・長さ)は変わらない。


var str = "This is a string.";
str = "This is another string.";

上記のサンプルではstrという名の変数が宣言されている。

文字列データ("This is a string.")はメモリに配置される。

変数strにはそのメモリの場所が格納される。

2行目では新しい文字列データが生成され、そのメモリの場所がstrに格納される。

最初の文字列データ自体は消えないが、コード内に、最初の文字列データにアクセスできる変数がなくなったので、unreachable(アクセス不可能)とマークされて、Dartのガベージコレクションにより最終的にはメモリが解放される。


immutableデータを使う利点はいくつかある。

immutableデータを使うとスレッドセーフとなる。immutableデータの内容を変えることはできないので、いかなるコードがアクセスしていても、データが同じであることが保証される。

参照を渡す際に、防御的コピーをする必要がない。状態を維持するために複雑なコードを書く必要がないので変数の中身を推測しやすい。

final、constキーワードを用いたサンプルによりDartのビルトインimmutable機能について議論していく。

変更すべきでない二つのデータを宣言する。


Final variables vs. constants

final変数は一度だけ初期化が可能。必ず初期化する必要がある。…

2020/11/15 A tour of the core libraries>> dart:coreの訳

 

このページでは、Dartのコアライブラリの主要な機能を使用する方法を示します。 これは単なる概要であり、決して包括的なものではありません。 クラスの詳細が必要な場合は、DartAPIリファレンスを参照してください。



dart:core – numbers, collections, strings, and more

dart:coreライブラリ(APIリファレンス)は、小さいながらも重要な組み込み機能のセットを提供します。 このライブラリは、すべてのDartプログラムに自動的にインポートされます。


Printing to the console

トップレベルのprint()メソッドは、単一の引数(任意のオブジェクト)を受け取り、そのオブジェクトの文字列値(toString()によって返される)をコンソールに表示します。

print(anObject);
print('I drink $tea.');

文字列とtoString()メソッドに関するさらに詳しい情報はlanguage tourのStringsをご覧ください。


Numbers

dart:coreライブラリは、num、int、およびdoubleクラスを定義します。これらには、数値を操作するための基本的なユーティリティがいくつかあります。

文字列は、それぞれintおよびdoubleのparse()メソッドを使用して整数またはdoubleに変換できます。

文字列→数値

2020/11/14 A tour of the core libraries>>Exceptionsの訳

 

Dartコアライブラリは、多くの一般的な例外(exception)とエラー(error)を定義しています。例外は、事前に計画してキャッチできる条件と見なされます。エラーは、予期しない、または計画していない状態です。

最も一般的なエラーのいくつかは次のとおりです。

NoSuchMethodError

受信オブジェクト(nullの可能性がある)がメソッドを実装していない場合にスローされます。


ArgumentError

予期しない引数が渡されたメソッドがスローするエラー。


アプリケーション固有の例外をスローすることは、エラーが発生したことを示す一般的な方法です。Exceptionインターフェイスを実装することにより、カスタム例外を定義できます。

class FooException implements Exception {
  final String msg;

  const FooException([this.msg]);

  @override
  String toString() => msg ?? 'FooException';
}

例外についてはこちらもご覧ください。…

2020/11/14 freezedパッケージreadmeの訳

次のページ(パート2)へ>>


How to use


Install


Freezedを使うには、通常のbuild_runner / code-generatorセットアップが必要です。

まず、pubspec.yamlファイルにbuild_runnerとFreezedを追加してインストールします。

# pubspec.yaml
dependencies:
  freezed_annotation:

dev_dependencies:
  build_runner:
  freezed:

これ↑により3つのパッケージをインストールします。

  • build_runner,コード生成機能を提供します。
  • freezed,コード生成機能です。
  • freezed_annotation, freezedのためのアノテーション機能を提供します。

Run the generator


ほとんどのコード生成パッケージと同様に、Freezedを使うためにはannotation(meta)のインポートと、ファイルの先頭でpartキーワードを使う必要があります。

Freezedを使うファイルの先頭で、このようにコードを記述してください。

import 'package:freezed_annotation/freezed_annotation.dart';

part 'my_file.freezed.dart';

package:flutter/foundation.dartのインポートも検討してください。

その理由は、foundation.dartのインポートにより、Flutter devtool内で可読性の高いオブジェクトを生成するためのクラスもインポートされるからです。

foundation.dartをインポートすると、Freezedは自動的に対処します。

以下のコードを参考にしてください。

// main.dart