다음과 같은 항목 목록이 있다고 가정합니다.
val utils: Seq[Utilities] = {
Seq(
Utilities("jackhammer", 24, "Industrial item", "For sale", "Available"),
Utilities("axe", 19, "Home item", "For sale", "Available"),
Utilities("pick", 39, "Garage item", "For sale", "Not Available")
)
}
Utilities
의 스켈레톤 클래스
다음과 같습니다 :
final case class Utilities(item_name: String, ref_id: Int,
item_type: String, sale_status: String, status: String)
우리는 또한
Utilities
의 현재 판매 상태에 대한 다른 아이템 목록을 가지고 있습니다
: (이 수업은
Utilities
와 관련이 없습니다.
, 두 번째 열만 유틸리티에 적용하는 것을 목표로합니다.)
val newAttr: Seq[NewAttributes] = {
Seq(
NewAttributes(1, "For sale"),
NewAttributes(3, "Not for sale"),
NewAttributes(18, "Discontinued")
)
}
NewAttributes
의 스켈레톤 클래스
다음과 같습니다 :
final case class NewAttributes(r_id: Int, status: String)
Utilities
를 교체하는 방법
'
sale_status
NewAttributes
기록
status
순서대로?
새로운 업데이트
Utilities
다음과 같아야합니다 :
Utilities("jackhammer", 24, "Industrial item", "For sale", "Available")
Utilities("axe", 19, "Home item", "Not for sale", "Available")
Utilities("pick", 39, "Garage item", "Discontinued", "Not Available")
newAttr
에서 요소를 성공적으로 검색하고 있습니다.
다음 코드를 사용하지만
utils
에 적용하는 방법을 모르겠습니다.
위의 스키마를 달성하십시오.
val prepStatuses =
for(na <- newAttr)
yield na.status
어떤 도움이라도 대단히 감사합니다!
- 답변 # 1
- 답변 # 2
필요한 데이터를 찾는 방법이 필요합니다 :
def findStatus(id: Int): Option[String] = newAttr.find(_.r_id == id).map(_.status)
그리고 이해하기 위해 그것을 사용해야합니다 :
val mappedUtils = for(u <- utils) yield u.copy(sale_status = findStatus(u.ref_id).getOrElse(sys.error(s"No such id ${u.ref_id}")))
- 답변 # 3
각
index
를 간단히 매핑 할 수 있습니다 유틸리티를copy
에 sale_status가 수정 된 해당 utils 요소 :utils.indices.map(i => utils(i).copy(sale_status = newAttr(i).status))
- 답변 # 4
zipWithIndex
를 사용하여 요구 사항을 달성 할 수 있습니다val zippedNewAttr = newAttr.zipWithIndex.map(_.swap).toMap val result = for(x <- utils.zipWithIndex; y = zippedNewAttr(x._2))yield Utilities(x._1.item_name, x._1.ref_id, x._1.item_name, y.status, x._1.status)
설명 :
zipWithIndex는 첫 번째 값이 원래 값이고 두 번째 값이 각 값의 인덱스 인 Tuple2를 생성합니다. 예를 들어newAttr.zipWithIndex
생산합니다(NewAttributes(1, "For sale"),1) (NewAttributes(3, "Not for sale"),2) (NewAttributes(18, "Discontinued"),3)
_.swap
위에서 생성 된 tuple2 값을 교환하고 .toMap은 각 Tuple2 레코드에 대해 맵을 생성하므로zippedNewAttr
(1 -> NewAttributes(1, "For sale")) (2 -> NewAttributes(3, "Not for sale")) (3 -> NewAttributes(18, "Discontinued"))
for 루프는
Utilities
를 생성합니다 대체 된 유틸리티sale_status
로개체를 다시 NewAttributesstatus
로 기록 및zipWithIndex는 순서를 유지합니다.업데이트
반복자를 사용하는 또 다른 더 좋은 방법이 있습니다
val utilsIterator = utils.iterator val newAttrIterator = newAttr.iterator val result = ArrayBuffer.empty[Utilities] while(utilsIterator.hasNext && newAttrIterator.hasNext){ val utils = utilsIterator.next() val newAttr = newAttrIterator.next() result.append(Utilities(utils.item_name, utils.ref_id, utils.item_type, newAttr.status, utils.status)) }
result
필수 출력입니다
관련 자료
- javascript - 배열의 모든 요소가 다른 배열에 있는지 확인하고 첫 번째 배열의 요소를 다른 것으로 바꾸려면 어떻게해야합니까?
- javascript : 요소를 클릭할 때 한 구성 요소에서 다른 구성 요소로 ID를 전달하는 방법
- sql - PostgreSQL은 특정 HTML 요소를 대체합니다
- oracle - 요소가 SQL의 다른 테이블에서 모든 항목과 일치하는지 확인하는 방법
- python - 가장 근접한 일치를 기반으로 큰 데이터 프레임 (10 만 개 이상의 행)에서 다른 값을 효율적으로 대체하는 방법은 무엇입니까?
- php - 페이지에 다른 요소가있는 경우 CSS를 통해 요소 숨기기
- regex - 다른 문자열이 뒤에 나오지 않으면 문자열을 교체합니다
- javascript - 바로 뒤에 다른 요소가 오는 경우에만 요소 선택
- 목록 요소에서 패턴을 제거하고 Python에서 다른 목록을 반환합니다
- 사용자 지정 지시문이있는 한 요소가 Angular에서 다른 요소 변경 이벤트를 트리거하는 이유는 무엇입니까?
- python - 목록 요소 목록을 차례로 비우는 방법은 무엇입니까?
- 누락 된 값을 Julia Dataframe의 다른 열 값으로 대체
- r - 한 변수의 값을 다른 변수의 값으로 조건부로 바꾸기
- indexing - R에서 한 배열이 다른 배열보다 큰 3D 인덱스를 어떻게 찾습니까 (이러한 요소를 NaN으로 대체하기 위해)?
- r - 행렬의 모든 요소를 크기 = n의 변수 이동 과부 내의 값의 최대 값으로 바꾸는 방법은 무엇입니까?
- Python에서 해당 문자열의 다른 요소에 의존하는 JSON 문자열에 요소를 추가하는 방법
- xml - qweb 보고서 템플릿을 상속하고 odoo에서 t 요소를 대체하는 방법
- ramda.js - 배열의 빈 문자열을 Ramda로 다른 값으로 어떻게 바꿀 수 있습니까?
- c# - txt 파일의 문자를 정의 된 목록의 다른 문자로 바꾸기
- node.js - 문자열의 모든 부분 문자열을 다른 부분 문자열로 바꾸려면 어떻게해야합니까?
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- JavaScript 변수를 HTML div에 '출력'하는 방법
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 화면에서 찾은 요소를 찾을 수없는 경우 셀레늄
주문이 정확하면 다음과 같습니다.