おさらい
Flutterの用語やフォルダ構成など、Flutter生活をエンジョイするための知識を少しだけ身につけました。
しかしこのふんわり感ではまだまだ検証に入ることができません!!
今日はひとまずDartという言語を知ってみたいと思います。
題材
もちろんズンドコキヨシです。
ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了
やってみた
こんな感じです。
処理の内容は特に解説する必要とかないですね!完成!
import 'dart:math';
main(List<String> args) {
List<String> zunDokoStack = new List<String>();
final rand = new Random();
while(zunDokoStack.join() != "ズンズンズンズンドコ") {
String value = "";
if (rand.nextInt(2) == 0) {
value = "ズン";
} else {
value = "ドコ";
}
zunDokoStack.add(value);
if (zunDokoStack.length > 5) {
zunDokoStack.removeAt(0);
}
print(value);
}
print("キ・ヨ・シ!");
}
もっとやってみた
ここで終わってはつまらないですよね。
色々なパーツに分けてみましょう!
まずは「ズン」と「ドコ」をenumで定義してみます。
enum ZunDoko {
Zun,
Doko
}
Dartのenumはとても機能が乏しく、文字列を定義して返すことができないようです。
しかも、Classのinnerに定義することができません。
仕方がないので、enumをいい感じにしてくれるHelperクラスを作ってみました。
これでenumを好きな文字列にできます。(みなさんこの辺はどうやってるんですかね?詳しい人教えてください。)
class ZundokoHelper {
static String getStringValue(ZunDoko zundoko) {
switch(zundoko) {
case ZunDoko.Zun:
return "ズン";
case ZunDoko.Doko:
return "ドコ";
}
}
}
次はベタが記されている色々な処理をClassを用意して突っ込んでいきます。
Viewで業務ロジックしたくないですしね!
class ZunDokoKiyoshiModel {
String getRandomZundokoString() {
final rand = new Random();
return ZundokoHelper.getStringValue(ZunDoko.values[rand.nextInt(ZunDoko.values.length)]);
}
String successMessage() {
return "キ・ヨ・シ!";
}
bool isZunDokoKiyoshi(List<String> stack) {
return stack.join() == expectedZunDokoKiyoshi().join();
}
List<String> expectedZunDokoKiyoshi() {
List<String> expected = List<String>();
expected.add(ZundokoHelper.getStringValue(ZunDoko.Zun));
expected.add(ZundokoHelper.getStringValue(ZunDoko.Zun));
expected.add(ZundokoHelper.getStringValue(ZunDoko.Zun));
expected.add(ZundokoHelper.getStringValue(ZunDoko.Zun));
expected.add(ZundokoHelper.getStringValue(ZunDoko.Doko));
return expected;
}
}
main処理を書き換えれば完成!
かなりそれっぽくなりました!
import 'dart:math';
main(List<String> args) {
ZunDokoKiyoshiModel zunDokoKiyoshi = ZunDokoKiyoshiModel();
List<String> zunDokoStack = new List<String>();
while(!zunDokoKiyoshi.isZunDokoKiyoshi(zunDokoStack)) {
String value = zunDokoKiyoshi.getRandomZundokoString();
zunDokoStack.add(value);
if (zunDokoStack.length > zunDokoKiyoshi.expectedZunDokoKiyoshi().length) {
zunDokoStack.removeAt(0);
}
print(value);
}
print(zunDokoKiyoshi.successMessage());
}
全体的にJavaの書き方によく似ていますし、かといって古すぎずに良いですね!
Flutterが流行る理由がわかった気がします!