Connect IQ SDK 4.0.0 プレビュー版2を確認してみた

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メニューの最後に謎のセパレーターが入っていた。

この下にさらに項目を追加する予定なのか、それとも間違いなのかな。

あと、日本語の曜日表示の問題はやっぱりまだ修正されていなかった。

コメント

タイトルとURLをコピーしました