我正在从提供天气信息的 API 接收数据,为简单起见,我将仅提供接收到的数据的属性:
final double feels_like;
以及json反序列化:
feels_Like = json['main']['feels_like']
但是我得到了那个异常:
type 'int' is not a subtype of type 'double'
,实际上我解决了它(使用toDouble()
)这里没有问题,问题在于以下概念。
假设返回值是一个int,double不能容纳它吗?
例如:
double feels_like = 30.1; // ok
double feels_like = 30; // also ok
这两种数据类型都是基类
num
类的子类型,并且 double 对象可以保存 int 对象,但反之则不然。
那么,为什么在使用 API 时会发生这种情况,即使它返回
int
。
不可以,
double
类型的变量不能保存int
。
以下是一个错误:
double feels_like = 30 as int; // not allowed
int x = 30;
double y = x; // not allowed
如果您想要一个可以保存
double
或 int
值的类型,请将类型声明为 num
。
num feels_like = 30 as int; // allowed
int x = 30;
num y = x; // allowed
num z = 3.7; // allowed