如何找到这个柯里化函数的返回类型?

问题描述 投票:0回答:3
addition(int a) => (int b) => (int c) => a+b+c;

这就是功能

当我打电话时

addition(1)(2)(3)
它打印 6 没问题

我想知道这个函数的返回类型

我正在尝试柯里化概念!!

dart currying
3个回答
0
投票

正如 Rahul 所说,在您的示例中,返回值的当前类型将是

dynamic
。但如果我们想应用静态已知类型,它会是这样的:

int Function(int) Function(int) addition(int a) =>
    (int b) => (int c) => a + b + c;

void main() {
  print(addition.runtimeType);
  // (int) => (int) => (int) => int
}

0
投票

它应该是动态的。当未指定任何内容时,返回类型为dynamic。

这个陈述可以被打破为

addition(int a) {
  return (int b) {
    return (int c) {
      return a+b+c;
    };
  };
}

这里因为没有一个函数有任何返回类型,所以它们的返回类型都是dynamic


0
投票

你可以跑

print(addition.runtimeType);
# (int) => (int) => (int) => int

接受三个整数并返回一个整数。

© www.soinside.com 2019 - 2024. All rights reserved.