【问题标题】:Difference between a method called with a parameter and a method called with none带参数调用的方法和不带参数调用的方法的区别
【发布时间】:2020-06-21 17:26:03
【问题描述】:

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

state is! LoginInProgress ? _onLoginButtonPressed : null,

和:

state is! LoginInProgress ? _onLoginButtonPressed(): null,

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

【问题讨论】:

    标签: flutter dart methods conditional-operator method-parameters


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回答,从以前的答案中理解了很多...无论如何感谢您的贡献,快乐编码
    • 顺便说一句,我才 14 岁,我什么都不知道
    【解决方案2】:

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

    state is! LoginInProgress ? _onLoginButtonPressed(): null,

    state is! LoginInProgress ? _onLoginButtonPressed : null,

    为了更清楚:

    dynamic storeFunction = _onLoginButtonPressed;storeFunction

    dynamic storeFunctionResult = _onLoginButtonPressed(); storeFunctionResult 变量中(如果返回类型不是void

    【讨论】:

    • 哇,非常感谢,这对于我的代码的行为方式来说是完全有意义的......
    • 对不起,我不能投票给你,我没有多达 15 个声望
    • 别担心,没问题
    【解决方案3】:

    需要明确的是 _onLoginButtonPressed 似乎是 void Function() 类型,而您试图为某些小部件设置回调(我们没有完整的 sn-p - 所以我试图猜测)

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

    1. 这个_onLoginButtonPressed返回函数对象——你没有调用这个函数,你只是把它发送到别处

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

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

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

    【讨论】:

    • 非常感谢,我现在更了解这一点...祝您编码愉快,
    • 抱歉我的代码没有澄清,_onLoginButtonPressed 是动态类型的
    • 你只能调用函数和可调用类(实现 call()) - 所以我肯定是函数类型 =)
    猜你喜欢
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    相关资源
    最近更新 更多