You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart中的Map能否存储函数?调用时报方法未定义错误如何解决

错误原因

Dart 的 Map 类型本身没有内置 mltply 成员,点语法instance.member是用来访问类自身定义的属性和方法的,不能用来读取 Map 中自定义键对应的值。你代码里的mltply是手动往 Map 里添加的自定义键,不是 Map 类原生的成员,所以运行时会抛出方法未定义的错误。

正确调用方法

要调用 Map 中存储的函数,首先需要用方括号语法[键名]取出对应的函数值,再执行调用。考虑到 Map 中可能不存在对应键导致返回null,建议加非空断言或者空安全判断:

Map<String, Function> library = {
    "mltply": (int x, int y) => x * y,
    "addtn": (int x, int y) => x + y
};

// 写法1:确认键一定存在时,加非空断言直接调用
print(library['mltply']!(2, 4));

// 写法2:添加空判断,避免键不存在时抛出空异常
final mltply = library['mltply'];
if (mltply != null) {
  print(mltply(2, 4));
}

内容的提问来源于stack exchange,提问作者bondanjody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:24:05