gpt4 book ai didi

clojure - 键作为映射的函数,反之亦然,在 Clojure 中如何以相同的方式工作?

转载 作者:行者123 更新时间:2023-12-01 01:05:53 25 4
gpt4 key购买 nike

({:x 10, :y 20, :z 50} :y)
gives 20

并且
(:y {:x 10, :y 20, :z 50})
gives 20

在这两种情况下它如何在内部工作,

对于 map 作为函数,我可以理解您可以通过理解第一个值是 map 来区分形式。

但是 key 是如何变成函数的呢?在运行时,key 可以是任何类型的值,那么运行时如何理解它必须将此值视为一个函数?

最佳答案

map 是函数,来自 docs :

Maps implement IFn, for invoke() of one argument (a key) with an optional second argument (a default value), i.e. maps are functions of their keys. nil keys and values are ok.



所以这:
({:x 10, :y 20, :z 50} :y)

应用函数 {:x 10, :y 20, :z 50}:y .

关键字也是函数,引用 docs :

Keywords implement IFn for invoke() of one argument (a map) with an optional second argument (a default value). For example (:mykey my-hash-map :none) means the same as (get my-hash-map :mykey :none)



所以当你这样做时:
(:y {:x 10, :y 20, :z 50})

你实际上调用了 :y{:x 10, :y 20, :z 50}作为论据。

基本上任何实现 IFn 的东西并且在类路径上可以被视为一个函数。

关于clojure - 键作为映射的函数,反之亦然,在 Clojure 中如何以相同的方式工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18716180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com