2020/9/23 Dart : Adding features to a class: mixinsの訳

Mixinは、複数のクラス階層の中で、クラスのコードの再利用するための具体的な方法です。

mixinを使うためには、withキーワードの後ろにmixin名を記述します。次のサンプルはmixinを使用した二つのクラスの例です。

class Musician extends Performer with Musical {
  // ···
}

class Maestro extends Person
    with Musical, Aggressive, Demented {
  Maestro(String maestroName) {
    name = maestroName;
    canConduct = true;
  }
}

MusicianクラスはPerformerクラスを継承しており、Musicalミックスインを実装(使用)している。

MaestroクラスはPersonクラスを継承しており、

Musicalミックスイン

Aggressiveミックスイン

Dementedミックスイン

の三つのミックスインを実装(使用)している。


mixinを実装する場合、Objectクラスを継承して、コンストラクタを宣言しないクラスを作ってください。ミックスインを通常のクラスとして使用しない場合は、classキーワードの代わりにmixinキーワードを使用してください。

例えば、…

2020/9/19 Dart: Sound null safetyの訳

Sound null safety

Dart言語にnull安全が導入されます。(現在ベータ版です(2021年2月時点))

null安全を導入した場合、デフォルトでは普通に型宣言したら、それはnon-nullable型になります。つまり普通に宣言した変数は、nullを持つことができない。普通に宣言した変数の値がnullということはない。

null安全を導入することで、null-dereference errorが実行時に発生することがなくなり、代わりにコード編集時の静的解析エラーとなります。

次のスクリーンショットに示すように、通常の開発環境でnullセーフティを試すか、既存のコードを移行してnullセーフティを使用するか、WebアプリDartPad with NullSafetyでヌルセーフティの使用を練習できます。

Screenshot of DartPad null safety snippet with analysis errors

important

null安全はまだテクニカルプレビューなので、製品版で使用しないでください。特にFlutterフレームワークはまだnull安全に対応していません。(2020年9月19日時点)(2021年2月時点で削除されている。)


Null safety principles

Dart null安全サポートは、次の3つのコア設計原則に基づいています。

Non-nullable by default.明示的にnull値をとることができると示さない限り、non-nullable型とみなされます。このデフォルトは、APIでnull以外が断然最も一般的な選択であることが調査で判明した後に選択されました。

Incrementally adoptable. 何をnull safetyにマイグレートするか、そしていつマイグレートするかを選択できます。同じプロジェクトでnull-safeなコードとnon-null-safeなコードを混在させることができます。徐々にマイグレートしていくことが可能です。マイグレーションを助けるツールを提供しています。

Fully sound. Dartのnullセーフティは健全であり、コンパイラの最適化を可能にします。型システムがnullではないと判断した場合、値がnullになることはありません。プロジェクト全体とその依存関係をnullセーフティに移行すると、健全性のメリットを最大限に活用できます。バグが少なくなるだけでなく、バイナリが小さくなり、実行が高速になります。


A tour of

2021/2/15 Dart:null aware演算子について

 

Dartではnullである可能性がある変数を扱う時に便利な演算子が用意されています。

一つ目は??=演算子です。

変数の現在の値がnullの時に代入を行います。変数の現在の値がnullでない時は代入が行われません。

int a; // <-- 初期化していないのでaの値はnull。
a ??= 3;
print(a); // <-- Prints 3.

a ??= 5; // <-- aの値は3。つまりaの値はnullではない。なので5は代入されない。
print(a); // <-- Still prints 3.

 

もう一つのnull-aware演算子は??です。

??演算子は、??演算子の左側の式の値がnullでない場合、左側の式の値を返します。

??演算子の左側の式の値がnullの場合、??演算子の右側の式の値を返します。

print(1 ?? 3); // <-- Prints 1.

2020/9/11 Kotlin 初めの一歩

https://kotlinlang.org/docs/reference/basic-syntax.html

上記ページを読み、Dartと明らかに違う点についてKotlinの文法をまとめる。

間違った記述がある可能性があります。ご指摘いただけるとありがたいです笑


In Kotlin, if can also be used as an expression:

if文は式としても使える、と。

ということで、if-expressions.

If Expression

Kotlinでは、ifは式(expression)です。つまりifは値を返します。それゆえに、三項演算子(condition ? then : else)はありません。なぜなら、ifを使えばよいからです。


fun main(){
    val a=12
    val b=10
    var max = a 
    
    if (a < b) {