4.0.0のプレビュー版2が3/11に出ていたようなので、ちょっと遅くなったが見てみた。
ドキュメント
READMEに4.0.0の変更情報が掲載されていた。
Improved code generation for if statements.
との記述がコンパイラーのところにあり、パフォーマンスがアップするかな?と思ったが実行時間に変化はなかった。
「何の改善なのか」を書いてくれよと思った。
コンパイラ
4.0.0プレビュー1で通っていたコードなのだが、またエラーが出た。
Application.AppBase.getInitialViewのリターンを次のように記述していたのだが、これがダメなようだ。
function getInitialView() {
var model = WatchUi.loadResource(Rez.Strings.DeviceModel);
view_ = null;
delegate_ = null;
switch(model) {
case "vivoactive_hr":
view_ = new DigitalHRJView();
return [ view_ ];
break;
default:
if (WatchUi.WatchFace has :onPartialUpdate) {
delegate_ = new DigitalVivo4Delegate();
view_ = new DigitalVivo4View(delegate_);
return [ view_, delegate_ ];
}
else {
view_ = new Digital45View();
return [ view_ ];
}
break;
}
}
上のコードのreturnでArrayを返している部分で以下のエラーが出た。
Object of type ‘$.Toybox.Lang.Array<Any>’ does not match return type ‘PolyType<Null or $.Toybox.Lang.Array<$.Toybox.WatchUi.InputDelegate or $.Toybox.WatchUi.View>>’
この部分、as Toybox.Lang.Array<Toybox.WatchUi.View or Toybox.WatchUi.InputDelegate>を後ろに付けることで解決はする。
getInitialViewの関数定義が、getInitialView() as Array<View or InputDelegate> or Nullとなっているため、それに合わせたリターンデータにする必要があったみたいだ。
4.0.0プレビュー1では、リターンデータの型の一致までは確認されなかったのか?
リリースノートにも、それらしいことは書かれてなかったのだが。
Add type information to the API.
リリースノートの上の記述が該当するものだったのだろうか。
修正したコードを4.0.0プレビュー1でもコンパイルしたがエラーにはならなかった。
シミュレータ
READMEの中にシミュレータに変更があったような書き方だったのだが、該当箇所3.2.5と比べてみても、変わりはなかったような気がする。
ウォッチアプリケーションが使えるようになったとの記述に関しては、自分がそういうプログラムを作っていないので確認はしていない。
履歴に乗っていない変更箇所として、Stteingsメニューの最後に謎のセパレーターが入っていた。
この下にさらに項目を追加する予定なのか、それとも間違いなのかな。
あと、日本語の曜日表示の問題はやっぱりまだ修正されていなかった。
コメント