clojure-将项添加到嵌套集
假设我有这样一套:clojure-将项添加到嵌套集,clojure,Clojure,假设我有这样一套: #{#{"a"} #{"b"} #{"c"}} 假设我想更新中间集,使s成为: #{#{"a"} #{"be"} #{"c"}} 我将如何实现这一点 (-> #{#{"a"} #{"b"} #{"c"}} (disj #{"b"}) (conj #{"be"})) => #{#{"a"} #{"be"} #{"c"}} (当然,没有成套的顺序,它很可能以任何顺序显示) (当然,在集合中没有顺序,它很可能以任何顺序显示)。你所说的“中间”集合到底是什么意思?
#{#{"a"} #{"b"} #{"c"}}
假设我想更新中间集,使s成为:
#{#{"a"} #{"be"} #{"c"}}
我将如何实现这一点
(-> #{#{"a"} #{"b"} #{"c"}} (disj #{"b"}) (conj #{"be"}))
=> #{#{"a"} #{"be"} #{"c"}}
(当然,没有成套的顺序,它很可能以任何顺序显示)
(当然,在集合中没有顺序,它很可能以任何顺序显示)。你所说的“中间”集合到底是什么意思?包含“b”的那个?或者是一个恰好打印在中间的那个词?B是我的意思,然后下一个问题是“更新”是什么意思?很容易回答这个问题,从它中创建一个新的集合,它不包含<代码> {{b}< /Cord>,然后用那个集合创建另一个集合,用<代码> {{}}。已添加。但是,对第一个集合的所有预先存在的引用仍将保持不变。如果要更改原始集合,以便将
{b}
替换为{be}
,并被所有预先存在的引用视为相同,这是另一种情况(而且更复杂)问题。@BobJarvis您唯一可以更改的是引用所引用的内容:@form
/(deref form)
的结果。您在任何时候都不能更改引用的标识,也不能更改引用所引用内容的标识。为什么所有嵌套集都只有一个元素?您所说的“中间”到底是什么意思“设定?包含“b”的那个?或者是一个恰好打印在中间的那个词?B是我的意思,然后下一个问题是“更新”是什么意思?很容易回答这个问题,从它中创建一个新的集合,它不包含<代码> {{b}< /Cord>,然后用那个集合创建另一个集合,用<代码> {{}}。已添加。但是,对第一个集合的所有预先存在的引用仍将保持不变。如果要更改原始集合,以便将{b}
替换为{be}
,并被所有预先存在的引用视为相同,这是另一种情况(而且更复杂)问题。@BobJarvis唯一可以更改的是引用所引用的内容:@form
/(deref form)
的结果。任何时候都不能更改引用的标识,也不能更改引用所引用内容的标识。为什么所有嵌套集都只有一个元素?