String times(str)意思是说参数是一个函数,函数的返回值是String类型,函数名字叫times,有一个参数是str。其实String times(str)也就是函数原型。
第一种解决方式 : 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; }
List listTimes (List list, String f(str)) { var rt = []; for (var index = 0; index < list.length; ++index) { rt.add(f(list[index])); } return rt; }
看图,String times(Str)是个形参,其中的`String`和`(Str)`只是这个形参的描述。
调用listTimes(list2, times)相当于把方法对象 times赋值给了形参String times(Str),String times(Str) = times
根据老师讲的,dart中字符串和数字相乘得到的是一个字符串,这个应该是Dart特有的,反正我没在其他语言里见过;
32行,删掉第二个 String。
void main(){ var list = ["wo", "kao", "1", "20.5"]; var result = listTime3(list, times3); print(result); } listTime3(list,times3(item)){ for (var index = 0; index < list.length; index ++){ list[index] = times3(list[index]); } return list; } times3(item) { return item*3; }