У меня есть проблема, когда я генерирую много значений и должен быть уверен, что работаю только с уникальными. Поскольку я использую node js, с флагом --harmony и имею доступ к коллекциям гармоник, я решил, что Set может быть вариантом.
То, что я ищу, похоже на следующий пример:
'use strict';
function Piece(x,y){
this.x = x
this.y = y
}
function Board(width,height,pieces){
this.width = width
this.height = height
this.pieces = pieces
}
function generatePieces(){
return [
new Piece(0,0),
new Piece(1,1)
]
}
//boardA and boardB are two different but equivalent boards
var boardA = new Board(10,10,generatePieces())
var boardB = new Board(10,10,generatePieces())
var boards = new Set()
boards.add(boardA)
boards.has(boardB) //return true
Теперь, как правило, для достижения этого на другом языке, скажем, С#, я ожидаю, что вам придется реализовать функцию равенства, а также функцию генерации хеш-кода для обеих платформ и частей. Поскольку я ожидал, что равенство по умолчанию будет основано на ссылках. Или, возможно, использовать специальный неизменяемый тип значения (например, класс case в scala)
Есть ли способ определить равенство для моих объектов для решения моей проблемы?