defstruct
user=> (defstruct Point1 :x :y)
#'user/Point1
user=> (def p1 (struct-map Point1 :x 3 :y 4))
#'user/p1
user=> (prn p1)
{:x 3, :y 4}
nil
user=> (prn (:x p1))
3
nil
user=> (prn (struct-map Point1 3 5))
{:x nil, :y nil, 3 5}
nil
deftype
user=> (deftype Point2 [x y]) ; 创建了一个java类
user.Point2
user=> (def p2 (Point2. 8 9)) ; 注意‘.’ 构造函数(new Point2)
#'user/p2
user=> (prn p2)
#<Point2 user.Point2@27485e6>
nil
user=> (prn (:x p2)) ; 不起作用
nil
nil
user=> (prn (.x p2))
8
nil
defrecord
user=> (defrecord Point3 [x y]) ; 创建了一个map
user.Point3
user=> (def p3 (Point3. 11 12))
#'user/p3
user=> (prn p3)
#user.Point3{:x 11, :y 12}
nil
user=> (prn (:x p3)) ; 起作用
11
nil
user=> (prn (.x p3)) ; 仍然起作用
11
nil
发表评论
亲~ 评论内容是必须的哟! o(∩_∩)o
昵称
邮箱
主页
评论