【问题标题】:Didn't understand where to use Void function and Return type function不明白在哪里使用 Void 函数和返回类型函数
【发布时间】:2019-09-29 13:24:04
【问题描述】:

我对编程真的很陌生,在学习 Dart 函数时,我遇到了一个程序,但我不明白是什么让他们使用不同的函数,一个有返回值,另一个没有返回值。 两者都将在主程序期间调用,并且两个子程序都完成任务而不返回任何值(至少我没有看到类似的东西), 谁能指出为什么必须使用返回类型函数。

import (....)

void main() => runApp(XylophoneApp());

class XylophoneApp extends StatelessWidget {

//Void Fuction
  void player(int songNumber) {
    final player = AudioCache();
    player.play('note$songNumber.wav');
  }

//Function with return
  Expanded buildKey({colors, songNumber}) {
    return Expanded(
      child: FlatButton(
        color: colors,
        onPressed: () {
          player(songNumber);
        },
      ),
    );
  }

//Call in main function
buildKey(colors: Colors.red, songNumber: 1),

【问题讨论】:

    标签: android-layout flutter dart


    【解决方案1】:

    player 方法只是播放歌曲并返回给调用者,即不向调用者方法返回任何值。因此返回类型为Void

    buildKey 方法会创建一个Button,它需要在UI 中呈现。 buildKey 方法正在创建一个小部件,它是一个 FlatButton,单击它时会播放一首歌曲。此方法返回此按钮,该按钮需要放置在 Widget 层次结构中,以便 Flutter 将其呈现在屏幕上。

    【讨论】:

      【解决方案2】:

      一般的功能 - 不仅在飞镖 - 包括 3 件事:

      • 输入
      • 进程
      • 输出

      这就像在数学中,例如,如果你有 (y = x + 1)。这是一个将“x”作为输入的函数,然后对该“x”执行一个处理,将“1”添加到它,然后将输出返回到“y”。在这个简单的示例中,输入类型是数字,输出类型也是数字。但是,在编程中可能并非总是如此。例如,您可以有一个函数,将一个单词作为输入,然后计算该单词中有多少字符并返回该单词中的字符总数。但也许你不需要知道这个数字。也许您只需将其存储在数据库中,稍后再返回。在这种情况下,您的函数不必返回数字或返回任何内容。它应该只是将其保存到数据库中。如果您已经在数据库中拥有该单词并且那里没有它的长度怎么办。在这种情况下,您的函数不必将单词作为输入,它应该自己进入数据库,获取单词,计算字符并将结果保存在数据库中。你看,基本上我们仍然有一个输入、过程和一个输出,但是输入和输出并没有直接传入或传出函数,函数负责获取其输入并返回输出。所以这真的取决于你想让你的函数做什么。

      关于您发布的代码。查看play 函数,它将songNumber 作为输入,其类型为int,然后它正在执行一些处理,例如创建Player 对象并使用songNumber 作为实际歌曲文件名的一部分.然后它的输出就是从您的扬声器播放的歌曲。您听到的声音是实际输出。除了声音,您不需要任何其他输出。这就是为什么在代码中它返回void。另一方面,第二个函数buildKey 的输出是widget 类型的Expanded,可以在内部用于编码。 buildKey 函数还接受 colorsongNumber 作为输入。在 buildKey Expanded 内部创建小部件。在该小部件FlatButton 内部也正在创建。第一个输入 (color) 用于指定 FlatButton 颜色,而第二个输入 (songNumber) 传递给 FlatButton onPressed 函数。按下按钮触发onPressed 函数时,它将调用player 函数,并为其提供先前传递的songNumber

      【讨论】:

        【解决方案3】:

        XylophoneApp.player 函数不返回任何值,因为它是一个 void 函数(相反它只会播放声音),其中 XylophoneApp.buildKey 函数将返回一个 Expanded 类型的值,然后它就起来了是否要使用返回值。

        【讨论】:

        • 是其中的“颜色”使其成为返回类型吗?
        • 在方法名前键入Expanded来分配返回类型
        猜你喜欢
        • 2015-03-24
        • 2021-12-19
        • 1970-01-01
        • 2019-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-28
        • 2017-07-13
        相关资源
        最近更新 更多