在DART中,假设我有以下类
class MyClass { const MyClass(); }
个
如果我有另一个类的属性接受Widget Function() someProperty
,
我习惯于说someProperty: () => const MyClass()
,但我想知道,如果我说
someProperty: MyClass.new
是使用其常量构造函数调用MyClass,还是始终使用其默认(非常量)构造函数调用它?
在DART中,假设我有以下类
class MyClass { const MyClass(); }
个
如果我有另一个类的属性接受Widget Function() someProperty
,
我习惯于说someProperty: () => const MyClass()
,但我想知道,如果我说
someProperty: MyClass.new
是使用其常量构造函数调用MyClass,还是始终使用其默认(非常量)构造函数调用它?
分割将始终构造一个非const
的对象.在创建拆分时,无法知道稍后是否会使用const
个参数或非const
个参数来调用它.也没有办法指定应该将剥离限制为只能使用const
个参数调用.由于teft-off是一个Function
对象,并且是可变的,因此无法知道它是否是对const
构造函数的tear-off,并且可以在const
上下文中调用,因此在调用teft-off时也不能指定const
.
您可以利用const
个对象(通常)被规范化来自己测试这一点:
class MyClass {
const MyClass();
}
void main() {
var f1 = () => const MyClass();
var f2 = MyClass.new;
print(identical(f1(), f1())); // Prints: true
print(identical(f2(), f2())); // Prints: false
}