2016-05-24 15 views

Trả lời

32

Kernel.length/1 sẽ trở lại kích thước của một danh sách:

length([1,2,3]) #3 

Bạn có thể làm điều này từ một truy vấn Ecto sử dụng:

query = from d in Device, where: d.uuid == ^uuid, select: fragment("count(?)", d.id) 
assert Repo.all(query)== 3 

Trong Ecto 2 bạn có thể sử dụng Repo.aggregate/4

query = from d in Device, where: d.uuid == ^uuid) 
assert Repo.aggregate(query, :count, :id) == 3 
+2

có bất kỳ sự khác biệt/lợi ích nào khi sử dụng Enum, count hay Kernel.length không? –

+3

Chúng sử dụng cùng chức năng https://github.com/elixir-lang/elixir/blob/v1.2.5/lib/elixir/lib/kernel.ex#L453 https://github.com/elixir-lang/ elixir/blob/v1.2.5/lib/elixir/lib/enum.ex # L452 - bạn bỏ qua một kết hợp mẫu khi sử dụng độ dài. Tôi sẽ cập nhật câu trả lời để sử dụng độ dài thay thế. – Gazler

+0

Tuyệt vời! cảm ơn cho rằng – Nomad

Các vấn đề liên quan