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

使用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下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号