Шаблон Scala, как зациклить два списка одновременно - PullRequest
0 голосов
/ 08 октября 2018

у меня есть два списка

 cards=List[Card]
 paymentMode=List[String]

я хочу зациклить их одновременно в шаблонном движке Twirl (Play Framework), я попробовал

(cards zip paymentMode).map{ case (card, p) =>

и когда я звоню @card iполучил "не найдено: карта стоимости"

1 Ответ

0 голосов
/ 08 октября 2018

Хорошо, давайте сначала посмотрим на Скалу, а затем на Вихрь.Итак, у нас есть два списка:

scala> val cards: List[String] = List("a", "b", "c")
cards: List[String] = List(a, b, c)

scala> val paymentMethods: List[String] = List("visa", "master", "debit")
paymentMethods: List[String] = List(visa, master, debit)

Затем сожмите их вместе (я предполагаю, что списки имеют одинаковую длину):

scala> cards.zip(paymentMethods)
res0: List[(String, String)] = List((a,visa), (b,master), (c,debit)

После этого вы можете иметь цикл for дляпройдитесь по нему:

scala> for((c,p) <- res0){println(s"The card $c with payment $p")}
The card a with payment visa
The card b with payment master
The card c with payment debit

В Twirl : в ваших представлениях вы можете получить что-то вроде следующего (обратите внимание на то, как определить val и использовать цикл for и как я использую@ как escape-символ или как ссылка):

@cards = @{List("a", "b", "c")}
@paymentMethods = @{List("visa", "master", "debit")}
@zipCardsPayments = @{cards.zip(paymentMethods)}

@for((c, p) <- zipCardsPayments){
  <h3> card: @c with methods: @p</h3>
} 

И вот что я получаю в браузере:

enter image description here

...