Function函数类型和class类型的异同
比如:
typedef FuncType = String Function(String str);
然后我们就可以:
FuncType aa = (String str) => str.trim();
aa(" ff"); // 或aa.call(" ff"),执行返回"ff"
但是它是可以转换为class的,即:
class FuncClass {
String call(String str) {
return str.trim();
}
}
FuncClass aa = new FuncClass();
aa.call(" ff")
两者的主要区别在于,前者即Function的方式可以在代码“执行阶段”创建一个 函数执行逻辑;
而后者的FuncClass则必须是要在定义处 先 显示写出 逻辑;
如果我们将第一个Function的方式改成在定义出写一个function,即:
String funcType(String str) {
return str.trim();
}
// 然后在FuncType aa = funcType,这样一对比就会发现FuncType和FuncClass没有太大区别;
这也是Rust的闭包是一个临时结构体的原因(即类似匿名类同时创建对象,就像new FuncClass()一样),不过还有区别是函数参数是放到结构体字段里的,即str是类的属性;
因此上面的FuncClass也可以改成:
// 这里假设自动生成了所有字段初始化的构造函数
class FuncClass {
String str;
String resullt
void call() {
result = str.trim();
}
}
FuncClass aa = new FuncClass(" ff");
aa.call();
aa.result; // "ff"
posted on 2023-11-12 17:26 Silentdoer 阅读(25) 评论(0) 编辑 收藏 举报