Ert*_*tin 5 lisp functional-programming clojure clojurescript
我遇到了这些关键字: :foo, ::foo, ::bar/foo, and :bar/foo
你能解释一下与例子的区别吗?
Jos*_*osh 10
:foo是一个非完全限定的关键字.它没有与之关联的命名空间.
(name :foo) ; => "foo"
(namespace :foo) ; => nil
Run Code Online (Sandbox Code Playgroud)
:bar/foo是一个名称空间限定的关键字.命名空间是bar,关键字的名称是foo
(name :bar/foo) ; => "foo"
(namespace :bar/foo) ; => "bar"
Run Code Online (Sandbox Code Playgroud)
::foo将当前命名空间与关键字相关联,使其完全合格.假设当前名称空间是"user":
*ns* ; => #namespace[user]
(name ::foo) ; => "foo"
(namespace ::foo) ; => "user"
::foo ; => :user/foo
Run Code Online (Sandbox Code Playgroud)
::bar/foo 将尝试扩展任何别名以使其完全合格:
(create-ns 'my.namespace) ; => #namespace[my.namespace]
(alias 'bar 'my.namespace) ; => nil
(name ::bar/foo) ; => "foo"
(namespace ::bar/foo) ; => "my.namespace"
::bar/foo ; => :my.namespace/foo
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
600 次 |
| 最近记录: |