我真的是编程新手,在学习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),
发布于 2019-09-29 13:34:53
XylophoneApp.player
函数不返回任何值,因为它是一个void
函数(相反,它只会播放声音),其中XylophoneApp.buildKey
函数将返回一个Expanded
类型的值,然后由您决定是否使用返回值。
发布于 2019-09-29 14:51:05
方法player
只是播放一首歌曲并返回给调用者,即不向调用者方法返回任何值。因此,返回类型为Void
。
然而,buildKey
方法创建了一个需要在UI中呈现的按钮。buildKey
方法是创建一个小部件,它是一个FlatButton,当单击该小部件时,它会播放一首歌曲。此方法返回此按钮,需要将其放置在窗口小部件层次结构中,以便flutter将其呈现在屏幕上。
发布于 2019-09-29 15:19:28
一般来说,函数-不仅仅是dart中的函数-由3件事组成:
这就像在数学中,如果你有(y =x+ 1)。这是一个函数,它将'x‘作为输入,然后对那个'x’执行一个将'1‘加到’x‘的过程,然后将输出返回给'y’。在这个简单的例子中,输入类型是一个数字,输出类型也是一个数字。然而,在编程中,情况可能并不总是如此。例如,您可以有一个函数,它接受一个单词作为输入,然后计算该单词中有多少个字符,并返回该单词中的字符总数。但也许你不需要知道这个数字。也许您只需要将其存储在数据库中,然后再回来。在这种情况下,您的函数将不必返回数字或返回任何内容。它应该只是将其保存到数据库中。如果数据库中已经有这个单词,但是没有它的长度,该怎么办呢?在这种情况下,您的函数不必接受单词作为输入,它应该自己访问数据库,接受单词,计算字符,并将结果保存在数据库中。你看,从根本上说,我们仍然有一个输入,进程和输出,但是输入和输出不是直接传入或传出函数,函数负责获取它的输入,返回的是输出。所以这真的取决于你想让你的函数做什么。
关于你发布的代码。看一下play
函数,它接受songNumber
作为输入,它的类型是int
,然后它执行一些处理,比如创建一个Player
对象,并使用songNumber
作为实际歌曲文件名的一部分。然后,它的输出是您的扬声器正在播放的歌曲。你听到的声音就是实际的输出。除了声音之外,你不需要任何其他的输出。这就是为什么在代码中它会返回void
。另一方面,第二个函数buildKey
的输出是一个Expanded
类型的widget
,可以在代码中使用它。buildKey
函数还接受color
& songNumber
作为输入。正在创建Inside buildKey
Expanded
小部件。在该小部件内部,还创建了FlatButton
。第一个输入(color
)用于指定FlatButton
颜色,而第二个输入(songNumber
)则传递给FlatButton
onPressed
函数。当按下按钮触发onPressed
函数时,它将调用player
函数,并给出之前传递的songNumber
。
https://stackoverflow.com/questions/58155637
复制