flutter - Flutter/Dart:具有参数的 setter/getter

标签 flutter dart

我不明白这是怎么回事。
在类里:

Function(int) get myGet  {
  return myStream.sink.add;
}

及其在屏幕中的实现:
myObject.myGet(33);

并将数字添加到流中。

最佳答案

当您调用myGet时,您实际上是在调用myStream.shink.add

void add(int a) {
  ...
}



Function(int) add = (int a) {
  ...
}

是一样的东西。

函数也是一种类型。函数名称(例如myStream.shink.addmyObject.myGetprint,...)是指针常量(因为您无法在dart上将其他函数分配给print),指向内存中匹配函数的地址。

PS:在javascript中,预定义函数就像变量而不是常量,因为您可以使用自己的处理程序更改默认函数(例如console.log)。

当您调用print时,编译器会更改打印并带有匹配的函数地址,而当您调用print('Hello')时,会将参数发送到该地址。在您的情况下,同样的事情也会发生。但不是在编译时,而是在运行时。
myGet是一个getter返回函数指针的类型。在运行时,当您调用myGet时,它将返回myStream.shink.add的地址。在函数调用后添加括号。由于您正在调用myGet,并且它指向myStream.shink.add,因此您实际上是在调用myStream.shink.add(33)

基本上:

myObject.myGet = myStream.sink.add;

您可以read more about function pointers here

关于flutter - Flutter/Dart:具有参数的 setter/getter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60499028/

相关文章:

android-studio - Android Studio 错误的 Dart 自动缩进

android - PathProvider 文档目录是一个安全的位置吗?

android - 如何在 Flutter dart 上使用 dwolla api

dart - 小部件中的图像 [ flutter ]

flutter :- How manage the backstack like in Android "SingleTask"?

dart标签控件-不了解流程

html - 如何使用 Dart 更改自定义复选框边框

android - Flutter:build/app/outputs下的apk/release目录和flutter-apk目录有什么区别?

dart - 通过参数传递要在函数内修改的变量

date - Flutter:一键选择时间和日期