Dart函数如何实现参数对外可见名与内部使用变量名不同
Dart实现外部参数名与内部变量名不一致的方案
Dart完全支持该用法,可根据场景选择以下两种实现方式:
方式1:关键字作为外部参数名的场景(适配你的示例需求)
你示例中的in属于Dart的保留关键字,无法直接作为变量名使用,可通过反引号包裹关键字作为命名参数名,函数内部再赋值给自定义变量即可:
class Value {} class Context {} void addValue(Value value, {required Context `in`}) { // 外部调用时用的参数名是in,内部直接用context变量 final context = `in`; // 后续内部逻辑都使用context变量操作 print(context.runtimeType); } void main() { final myValue = Value(); final myContext = Context(); // 调用方式和你预期完全一致 addValue(myValue, in: myContext); }
方式2:非关键字的普通参数名场景
如果只是单纯想让对外暴露的参数名和内部使用的变量名不同,不需要用到反引号,直接在函数开头做一次变量赋值即可:
// 对外暴露的参数名是userId,内部使用id变量操作 void fetchUser({required int userId}) { final id = userId; // 内部逻辑直接使用id print('查询用户id:$id'); } void main() { // 外部调用时使用对外可见的参数名userId fetchUser(userId: 10086); }
补充说明:如果希望减少手动赋值的样板代码,也可以在代码规范层面约定对外参数名的前缀/后缀规则,或者通过静态分析工具自定义检查,不需要额外的语法支持即可实现该需求。
内容的提问来源于stack exchange,提问作者EvGeniy Ilyin
相关产品推荐
相关产品推荐

