Đọc tài liệu của apply
:
user=> (doc apply)
-------------------------
clojure.core/apply
([f args] [f x args] [f x y args] [f x y z args] [f a b c d & args])
Applies fn f to the argument list formed by prepending intervening arguments to args.
nil
Vì vậy, (apply map vector (vec jpgList))
tương ứng với f x args
, vì vậy map
sẽ được áp dụng cho các chức năng vector
, tiếp theo là các yếu tố của (vec jpgList)
. Không giống như Haskell, map
của Clojure hỗ trợ nhiều bộ sưu tập để hoạt động. (vec jpgList)
có lẽ là một vector lồng nhau, hoặc danh sách, như trong ví dụ sau:
user=> (apply map vector [[1 2 3] [4 5 6]])
([1 4] [2 5] [3 6])
gì đã xảy ra là, mọi yếu tố sản xuất bởi map
là vector của mỗi phần tử thứ n của các phần tử của vector lồng nhau. Hàm này còn được gọi là transpose
trong các phép toán ma trận.
Nguồn
2013-04-30 14:21:55