为了账号安全,请及时绑定邮箱和手机立即绑定

使用listTimes方法时无法运行

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 回答

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

0 回复 有任何疑惑可以回复我~

第一种解决方式 : 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;
}
1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

使用listTimes方法时无法运行

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信