1. ホーム
  2. dart

[解決済み] Dartでintをdoubleに変換する簡単な方法はありますか?

2022-11-06 22:45:07

質問

非常に単純な問題です。私は役に立たないクラスを持っています。

class Useless{
  double field;
  Useless(this.field);
}

その後、私は大罪を犯して new Useless(0); チェック済モード(私がテストを実行する方法)では、これは吹っ飛んでしまいます。 int' は 'double' 型のサブタイプではありません。 .

今度は new Useless(0.0) を使えばうまくいくのですが、正直なところ、私は自分のテストを修正するのに多くの時間を費やしており、いたるところに.0を置くので、それをやっているとかなり間抜けな感じがします。

一時的な対策として、私はコンストラクタを次のように書き直しました。

    class Useless{
      double field;
      Useless(num input){
          field = input.toDouble();
      }
    }

しかし、これは醜いですし、頻繁に呼び出されると遅いのではないかと心配です。もっといい方法はないでしょうか?

どのように解決するのですか?

Dart 2.1では では、整数リテラルを直接使用することができます。 double が期待される場所で直接使用することができます。(参照 https://github.com/dart-lang/sdk/issues/34355。 )

これは構文上の糖分であり、以下のものにのみ適用されることに注意してください。 リテラル . int 変数 に自動的に昇格することはありません。 double に昇格しないので、以下のようなコードになります。

double reciprocal(double d) => 1 / d;

int x = 42;
reciprocal(x);

を実行すると失敗します。

reciprocal(x.toDouble());