defrecord
の宣言が正しいです。
その後、
;=> (defrecord Point [ x y ])
user.Point
;=> (def p (Point. 1 2)
#user.Point{:x 1, :y 2}
; records have access of members 'as-if' they were a hash
; (but more efficient)
;=> (:x p)
1
; sequence of points...
;=> [(Point. 1 2)(Point. 3 4)(Point. 5 6)]
[#user.Point{:x 1, :y 2} #user.Point{:x 3, :y 4} #user.Point{:x 5, :y 6}]
; read from a whitespace separated file
;=> (with-open [rdr (clojure.java.io/reader file)]
(doall (for [[x y] (map #(re-seq #"\w+" %) (line-seq rdr))]
(Point. x y))))
(#user.Point{:x "1", :y "2"} #user.Point{:x "3", :y "4"} #user.Point{:x "5", :y "6"})
をしかし私が欲しいのは、リストからポイントのシーケンスを作成しています。 '(def seq(apply。Point [[1 2] [3 4]])))'これは正しいとは知っています。 – Kane
@JinZhang:関数 '(defn make-point [xy](Point。xy))'を定義すると、 '(map(partial apply make-point)[[1 2] [3 4]])' ' 。 – mange
ありがとうございます。これを行うもっと便利な方法はありますか?機能を定義することなく。上で述べたように、ファイルからすべてのデータを読み込み、ポイントシーケンスに変換する必要があります。 – Kane