【问题标题】:<> different uses in dart<> 飞镖中的不同用途
【发布时间】:2021-11-19 04:33:03
【问题描述】:

所以我正在努力学习飞镖,我对编程并不陌生,但我是飞镖的新手。

假设我有这个声明:

List<T> nameOfFunction<T> (double variable)

我知道第一个List&lt;T&gt; 的意思是,它是函数的返回类型。我也知道double 是函数采用的参数的类型。但对我来说新的是第二个&lt;T&gt; 那是为了什么?

【问题讨论】:

  • 你的意思是让这个函数返回List&lt;T&gt;,还是List&lt;int&gt;(Dart ints,而不是以前的泛型类型也命名为int

标签: dart generics types


【解决方案1】:

nameOfFunction 之后的&lt;T&gt; 声明了一个名为T 的泛型类型变量。 nameOfFunction 函数对所有类型 T 都是通用的。这意味着对于T 的每个固定值,它可以返回TList

虽然通常只在返回值中使用泛型类型是很奇怪的,但它通常没有用处。

【讨论】:

  • 我修改了帖子以减少混乱。你说,它是在声明一个泛型类型。但我的问题是什么变量有这种类型???请耐心等待我。我通常知道函数有一个类型的输入:参数和返回也有一个类型......那么这里是什么类型的 T?它也是一个参数但具有泛型类型吗?!
  • &lt;T&gt; 引入了一个类型参数,使nameOfFunction 成为一个接受一个类型参数的泛型函数。就像double value 是一个值参数,它使函数接受一个值参数。两者都是参数,必须在调用函数时提供。此处的函数签名不会在任何地方使用该类型参数(主体可能,我们在这里看不到)。函数的类型参数不能在该函数之外使用,它的作用域就是函数本身。
  • 那么添加T类型的局部变量是另一种方式吗?上面的声明和这个有区别吗: list nameOfFuntion(double variable, dynamic secondVariable) ?
  • @lrn "这里的函数签名在任何地方都没有使用那个类型参数" 是的,它用在返回类型中,至少在初始公式中是这样
  • 我可以看到它现在已修复为List&lt;T&gt;。原来是List&lt;int&gt; nameOfFunction&lt;int&gt;(...),确实是一样的。我读了这个问题,它说List&lt;int&gt; nameOfFunction&lt;T&gt;(...)
猜你喜欢
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 2017-01-31
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
相关资源
最近更新 更多