在D语言中如何创建不可变的关联数组的关联数组?
D语言中创建不可变嵌套关联数组的正确方式
你的编译错误源于D语言对嵌套关联数组初始化的语法要求:内层的关联数组不能直接使用[key: value]的简写初始化,编译器会将其误解析为静态数组初始化器,而非关联数组。需要显式构造内层关联数组实例,以下是两种可行的修正方案:
方案1:使用标准库的assocArray函数
导入std.array模块后,用assocArray将键值对转换为关联数组:
import std.array; enum Direction { NORTH = "north", SOUTH = "south" } immutable Direction[int][int] COORD_LOOKUP = [ 3: assocArray([2: Direction.NORTH]), 1: assocArray([3: Direction.SOUTH]) ];
方案2:显式指定内层关联数组类型
直接通过类型构造器创建关联数组实例:
enum Direction { NORTH = "north", SOUTH = "south" } immutable Direction[int][int] COORD_LOOKUP = [ 3: Direction[int]([2: Direction.NORTH]), 1: Direction[int]([3: Direction.SOUTH]) ];
两种方案都能让编译器正确识别内层结构为关联数组,满足你创建不可变嵌套关联数组的需求。
内容的提问来源于stack exchange,提问作者Rawley Fowler
相关产品推荐
相关产品推荐

