0

请问带参数调用的方法和不带参数调用的方法有什么区别示例:

state is! LoginInProgress ? _onLoginButtonPressed : null,

和:

state is! LoginInProgress ? _onLoginButtonPressed(): null,

这两个语句在我的代码执行中具有不同的功能,_onLoginButtonPressed_onLoginButtonPressed()我的意思是,如果我能得到两者之间的区别,我会非常感谢,在此先感谢。

4

3 回答 3

1

当一个方法有一个参数并且它需要一个变量来执行该方法时,这就像你妈妈让你出去购物但你有参数说你需要钱和一个hello kitty包来执行那个任务。例如:假设一个名为 go_for_shopping 的方法需要两个变量来执行其任务,如果我们不提供整数,它将给您一个错误。

void go_for_shopping(string hello_kitty_bag, int money){ return hello_kitty_bag + money; }

但是,当您不设置任何参数时,它会在您调用该方法时执行不带任何参数的任务。

于 2020-06-21T17:56:13.673 回答
0

要清楚_onLoginButtonPressed似乎是类型void Function(),你试图设置回调到某个小部件(我们没有完整的片段 - 所以我试图猜测)

函数是 Dart 中的对象 - 您可以将函数作为参数传递并稍后调用

  1. _onLoginButtonPressed将返回 Function 对象-您不调用此函数,只需将其发送到其他地方

  2. 当 this_onLoginButtonPressed()调用该函数并返回 void(nothing)

在第二种情况下,当您尝试使用结果时会出现错误

此表达式的类型为“void”,因此无法使用其值。

于 2020-06-21T18:12:41.483 回答
0

在这种情况下,不是其中一种方法是否具有 a parameter,而是您是否放置了parenthesis。当你parenthesis在一个方法中使用它时,你就是在唤起它。(运行函数)。

state is! LoginInProgress ? _onLoginButtonPressed(): null, << 运行函数

state is! LoginInProgress ? _onLoginButtonPressed : null, << 不运行函数

为了更清楚:

dynamic storeFunction = _onLoginButtonPressed; << 将函数存储在变量上storeFunction

dynamic storeFunctionResult = _onLoginButtonPressed();<< 运行函数并将其返回的结果存储在storeFunctionResult变量中(如果返回类型不是void

于 2020-06-21T18:17:39.157 回答