【发布时间】:2010-09-03 07:37:15
【问题描述】:
1: user=> (def some-account {:number :any-number :balance :any-balance :bank :any-bank})
2: #'user/some-account
3: user=> (contains? some-account :bank)
4: true
5: user=> (assoc some-account :owner :any-owner)
6: {:owner :any-owner, :number :any-number, :balance :any-balance, :bank :any-bank}
7: user=> (contains? some-account :owner)
8: false
9: user=> (def some-account (assoc some-account :owner :any-owner))
10: #'user/some-account
11: user=> (contains? some-account :owner)
12: true
13: user=> (dissoc some-account :owner)
14: {:number :any-number, :balance :any-balance, :bank :any-bank}
15: user=> (contains? some-account :owner)
16: true
谁能解释一下这段代码?
为什么在(assoc some-account :owner :any-owner) 之后,(contains? some-account :owner) 会返回false?
为什么,只有在(def some-account (assoc some-account :owner :any-owner)) 之后(contains? some-account :owner) 才返回true?
为什么在(dissoc some-account :owner) 之后,(contains? some-account :owner) 返回true?
出于本能,我试着说(def some-account (assoc some-account :owner :any-owner))。但是为什么会这样呢?
【问题讨论】: