Tôi có một bộ các mục thuộc loại nào đó và muốn tạo bộ nguồn của nó.Cách tạo bộ nguồn của bộ trong Scala
Tôi đã tìm kiếm trên web và không thể tìm thấy bất kỳ mã Scala nào áp dụng tác vụ cụ thể này.
Đây là những gì tôi nghĩ ra. Nó cho phép bạn hạn chế cardinality của các bộ được tạo ra bởi tham số chiều dài.
def power[T](set: Set[T], length: Int) = {
var res = Set[Set[T]]()
res ++= set.map(Set(_))
for (i <- 1 until length)
res = res.map(x => set.map(x + _)).flatten
res
}
Điều này sẽ không bao gồm bộ trống. Để thực hiện điều này, bạn sẽ phải thay đổi dòng cuối cùng của phương thức đơn giản là res + Set()
Bất kỳ gợi ý nào có thể được thực hiện theo một phong cách chức năng hơn?
Tôi yêu đó - câu hỏi của tôi sẽ là, những gì khác là 'filterM' sử dụng cho? –
@oxbow_lakes Bạn có thể làm ví dụ làm bộ lọc biến vị ngữ ba chiều. ('x => if ...' 'None' /' Một số (sai) '/' Một số (đúng) '). Một 'None' sẽ xóa toàn bộ đầu vào. Nhưng tôi đoán sẽ có nhiều cách sử dụng tiên tiến hơn với những monads kỳ lạ mà tôi chưa từng nghe đến. – Debilski
Nó được xây dựng trong bằng cách: 'Danh sách (1, 2, 3) .powerset'. :) – Debilski