단순한 매트릭스 구현을 감안할 때스칼라는 가변성 및 배열/목록에 대해 혼란스러워합니다.
class Matrix(val matrix: Array[Array[Double]]) {
...
def add(scalar:Double) { matrix.map(_.map(_ + scalar)) }
def set(row:Int,col:Int,value:Double) { matrix(row)(col) = value }
...
}
내 이해하기 힘든 것은 매트릭스를 재 지정할 수 없다는 의미지만 은에서 새로운 값을 설정할 수 있습니다. set()이 작동하는 것으로 입증되었습니다.
추가 기능의 구현이 중단되었습니다.하지만이를 구현하는 가장 좋은 방법은 무엇입니까? 나는 transform
을 사용하는 것에 대해 희망적이었다.def add(scalar:Double) { matrix.transform(_.transform(_ + scalar)) }
// type mismatch; found : ...WrappedArray[Double] required: Array[Double]
def add(scalar:Double) { matrix.transform(_.transform(_ + scalar)) }
// type mismatch; found : ...WrappedArray[Double] required: Array[Double]
그러나 나는 그것을 아직 컴파일 할 수 없다. 예제가 작동하도록하는 방법이 있습니까?
그리고 list/array mutability에 대한 내 논리의 결함을 마음껏 치유 해주십시오 : P
또한 질문은 무엇을 성취하려는 것입니까? 변경할 수없는 코드 또는 변경 가능한 코드 또는 어떻게 든 작동하는 코드? – coubeatczech
행렬은 변경 불가능한 상태 여야합니다. – npiv