2017-03-16 3 views
2

카운트를 사용하여 내 목록을 반복하는 방법을 찾고 있었지만 방법을 찾지 못했습니다. var count = 0을 사용하려고했습니다.스칼라 개수 변수

내 코드는 다음과 같습니다. 하드 코딩 대신 하드 코드를 반복하는 정확한 방법을 알려줄 수 있습니까? 감사합니다.

if(order != null) { 
     for(i <- order.get(0).getItems) { 
      i.getProduct.getName 
      i.getProduct.getDescription 
      "%.2f".format(i.getPrice)) 
      i.getQuantity() 
      "%.2f".format(i.getItemTotal)) 
     } 
} 
+0

물건을 인쇄하려는 것 같지만 질문에 물건을 넣는 것에 대한 언급이 있습니다. 뭘 계산하려고하는거야? 인쇄의 목표는 무엇입니까? – Vidya

+0

List에 저장되어있는 목록의 일부 세부 정보를 인쇄하려고하고 List에 반복적으로 액세스해야합니다. 변수를 사용하는 방법이 없습니까? – Lee

+0

간단한 첫 번째 패스 대답은'import scala.collection.JavaConverters._'이고'for (order <- orderList.asScala) {}' – clay

답변

2

에서 제안에 따라 답을 업데이트 할 첫 번째 :

import scala.collection.JavaConverters._

이것은 당신이 스칼라 컬렉션으로 자바 컬렉션을 설정 할 수 있습니다 , 훨씬 더 쉽게 작업 할 수 있습니다. asScala.

내 의견에 언급했듯이, 나는 당신이 무엇을 합치려고하는지 전혀 모른다. 당신이 물건을 인쇄하는 것 같아요. 예를 들어 모든 주문의 모든 항목을 계산하려면 다음을 수행하십시오.

val totalItems = orders.asScala.foldLeft(0)(_ + _.getItems.size) 

동일한 총계를 생성하는 데는 여러 가지 다른 방법이 있습니다.

2

당신은 스칼라 컬렉션에 자바 컬렉션을 변환 할 수입 scala.collection.JavaConverters._를 가져올 수 있습니다. 이것은 모든 것을 처리하고 스칼라 함수를 사용할 수 있습니다. 따라서 셀 수없이 반복 할 필요가 없습니다.

import scala.collection.JavaConverters._ 
@for(order <- orders) { 
    <!-- Start of For loop - For each p in products add a row --> 
    @for(i <- order.getItems) { 
    <tr> 
     <td>@i.getProduct.getName</td> 
     <td>@i.getProduct.getDescription</td> 
     <td>&euro; @("%.2f".format(i.getPrice))</td> 
     <td>@i.getQuantity()</td> 
     <td>&euro; @("%.2f".format(i.getItemTotal))</td> 
    </tr> 
    }<!-- End of For loop --> 
} 

당신은 분명히 자바 ArrayList을 사용하고 있기 때문에의 Vidya