在函数中使用静态变量()

Dru*_*tan 6 dart

我会知道我们是否可以在函数中声明静态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中的库全局变量是首选,而不是仅包含静态变量或函数的类.


Oza*_*zan 5

您可以使用函数对象来维护状态:

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)