我真的是编程新手,在学习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),
答案 0 :(得分:1)
XylophoneApp.player
函数不会返回任何值,因为它是一个void
函数(相反,它只会播放声音),其中XylophoneApp.buildKey
函数将返回类型为{ {1}},然后由您决定是否要使用返回的值。
答案 1 :(得分:0)
方法player
仅播放一首歌曲,然后返回给调用者,即不向调用者方法返回任何值。因此,返回类型为Void
。
buildKey
方法将创建一个按钮,该按钮需要在UI中呈现。
buildKey
方法正在创建一个名为FlatButton的小部件,单击该小部件将播放一首歌曲。此方法返回此按钮,该按钮需要置于Widget层次结构中才能使它在屏幕上呈现。
答案 2 :(得分:0)
一般的功能-不仅在dart中,还包括3项内容:
例如,如果您有(y = x + 1),则就像在数学中一样。该函数以“ x”作为输入,然后对该“ x”进行处理,然后向其添加“ 1”,然后事物将输出返回为“ y”。在此简单示例中,输入类型是数字,而输出类型也是数字。但是,在编程中可能并非总是如此。例如,您可以具有一个函数,该函数将一个单词作为输入,然后计算该单词中有多少个字符并返回该单词中的字符总数。但是也许您不需要知道这个数字。也许您只需要将其存储在数据库中,然后再返回即可。在这种情况下,您的函数将不必返回数字或返回任何内容。它应该只是将其保存到数据库中。如果您已经在数据库中找到了该单词并且没有长度,该怎么办。在这种情况下,您的函数不必将单词作为输入,它应该自己进入数据库,接受单词,计算字符,然后将结果保存在数据库中。您会看到,从根本上说,我们仍然有一个输入,过程和一个输出,但是输入和输出并没有直接传递到函数中或从函数中直接传入或传出,这些函数负责获取其输入,并返回输出。因此,这实际上取决于您希望函数执行的操作。
关于您发布的代码。看一下play
函数,它以songNumber
作为输入,其类型为int
,然后它在进行一些处理,例如创建Player
对象和使用{{1 }}作为实际歌曲文件名的一部分。然后其输出就是从扬声器播放的歌曲。您听到的声音是实际输出。除了声音,您不需要任何其他输出。这就是为什么代码中返回的是songNumber
。另一方面,第二个函数void
的输出是buildKey
类型的widget
,可以在内部使用它进行编码。 Expanded
函数还接受buildKey
和color
作为输入。在songNumber
buildKey
内部正在创建小部件。在该小部件Expanded
中也正在创建。第一个输入(FlatButton
)用于指定color
颜色,而第二个输入(FlatButton
)则通过songNumber
FlatButton
函数传递。通过按下按钮触发onPressed
函数时,它将调用onPressed
函数,为其提供先前传递的player
。