我会知道我们是否可以在函数中声明静态var,就像我们在JavaScript中可以做的那样.
当我回调我的函数时,我的变量保留了她最后的做法.
或者我可以只使用全局变量(它不性感......)?
Gün*_*uer 11
您不能在函数中使用静态.
Dart中的全局变量没有代码味道,因为它们只是库全局.
JavaScript中的全局变量很难看,因为它们可能与来自第三方库的全局变量冲突.
Dart中不会发生这种情况.
因为您可以在Dart中创建一个尽可能小的库(例如,只有一个变量),并且在导入时类似于库的命名空间
import 'my_globals.dart' as gl;
Run Code Online (Sandbox Code Playgroud)
然后像使用它一样
print(gl.myGlobalValue);
Run Code Online (Sandbox Code Playgroud)
这没有代码味道.
您还可以创建一个类来模拟名称空间
class MyGlobals {
static myVal = 12345;
}
Run Code Online (Sandbox Code Playgroud)
但是Dart中的库全局变量是首选,而不是仅包含静态变量或函数的类.
您可以使用函数对象来维护状态:
library test;
class Test implements Function {
var status = 0;
static var static_status = 10;
call() {
print('Status: $status');
print('Static status: $static_status');
status++;
static_status++;
}
}
void main() {
var fun = new Test();
fun();
fun();
fun();
var fun2 = new Test();
fun2();
fun2();
fun2();
}
Run Code Online (Sandbox Code Playgroud)
输出:
Status: 0
Static status: 10
Status: 1
Static status: 11
Status: 2
Static status: 12
Status: 0
Static status: 13
Status: 1
Static status: 14
Status: 2
Static status: 15
Run Code Online (Sandbox Code Playgroud)