【发布时间】:2014-09-18 18:43:06
【问题描述】:
我正在尝试编写一个函数来执行以下操作:
isConstant(new Obj()) => false
isConstant(const Obj()) => true
有可能吗?
【问题讨论】:
标签: dart
我正在尝试编写一个函数来执行以下操作:
isConstant(new Obj()) => false
isConstant(const Obj()) => true
有可能吗?
【问题讨论】:
标签: dart
没有。
在运行时,编译时常量的值与您刚刚创建的新对象之间没有区别。差异只存在于编译时。
您唯一能做的就是检查对象是否与已知的编译时间常数相同。
在这种情况下,(x) => identical(const Object(), x); 会检测到“const Object()”对象与运行时创建的任何“new Object()”对象不同。仅当您在编写函数时知道所有编译时常量时才有效,因此它可能没有用。即使使用镜像遍历所有顶级/静态“const”声明也不会找到所有常量(这可能会非常浪费)。
你想解决什么问题需要这个功能?
【讨论】: