使用listTimes方法时无法运行

来源:5-4 方法对象

慕莱坞1094764

2019-08-15 22:59

void main() {
  // 方法赋值给变量
  var fun = printHello;
  fun();
  // 方法作为参数传递
  List list = [1, 2, 3, 4];
  list.forEach(print);

  List names = ["哈", "王", "神"];
  print(listTimes(names, times));
}

/// 方法
void printHello() {
  print("Hello");
}

/// 创建了一个传入函数的方法
List listTimes(List list, String times(msg)) {
  for (int i = 0; i < list.length; i++) {
    list[i] = times(list[i]);
  }
  return list;
}

String times(String msg) {
  return msg * 3;
}

在调用

 print(listTimes(names, times));

时软件报错,提示:

Error: The top level function has type 'String Function(String)' that isn't of expected type 'String Function(dynamic)'.

Change the type of the function or the context in which it is used.

  print(listTimes(names, times));


写回答 关注

2回答

  • PrettyChan
    2020-05-17 17:38:11

    times方法在声明的时候指定参数msg的类型为String,但是在listTimes接收参数声明的时候定义的是dynamic类型的msg,可以将List listTimes(List list, String times(msg))修改为List listTimes(List list, String times(String msg))

  • 灬风璃灬觞咏灬
    2019-08-30 23:03:21

    第一种解决方式 : times方法中入参类型String删掉;   

    String times(msg) {
      return msg * 3;
    }

    第二种解决方式 : listTimes方法种函数入参 msg加入String

    /// 创建了一个传入函数的方法
    List listTimes(List list, String times(String msg)) {
      for (int i = 0; i < list.length; i++) {
        list[i] = times(list[i]);
      }
      return list;
    }

Flutter开发第一步-Dart编程语言入门

Flutter开发语言-Dart编程入门,为大家上手及进阶Flutter打下坚实基础。

33620 学习 · 107 问题

查看课程

相似问题