gpt4 book ai didi

函数作为另一个函数中的参数 - Dart

转载 作者:IT老高 更新时间:2023-10-28 12:40:23 27 4
gpt4 key购买 nike

有什么区别

void test1(void fun(String element)) {
fun("Test1");
}

//AND

void test2(Function(String element) fun) {
fun("Test2");
}

我尝试同时运行它们,但在输出中找不到任何差异:

void main() {
test1((test) => print(test));
test2((test) => print(test));
}

void test1(void fun(String element)) {
fun("Test1");
}

void test2(Function(String element) fun) {
fun("Test2");
}

// Output:
// Test1
// Test2

我是 Dart 的新手,我一直在使用 Java,所以将函数传递给函数对我来说是新事物,所以如果有人可以向我解释上述代码的不同之处将非常感激。

最佳答案

声明函数参数与在名称之前的函数类型(void Function(String) fun)或作为(C-like)类函数语法之间没有真正的区别,其中名称在中间(void fun(String element))。两者都声明了一个名为 fun 的参数,其类型为 void Function(String)

Dart 最初没有办法内联编写函数类型,您必须使用 typedef,因此大多数旧代码使用 void fun(String element) 表示法。当引入 returnType Function(arguments) 表示法时(因为它是指定泛型函数类型所必需的),首先用类型编写函数类型参数变得更加容易。

两者都在使用,都不是惯用的,使用你认为最好的任何东西。

这两种格式之间有一个值得记住的区别:

  • void fun(String element) 表示法需要函数参数的名称。如果您编写 void fun(String),它将被解释为一个函数,该函数采用一个名为 Stringdynamic 类型参数。
  • void Function(String) fun 表示法假定单个参数名称是类型。

我个人更喜欢原始的函数参数格式,除了必须写参数名称。

关于函数作为另一个函数中的参数 - Dart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52961965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com