【问题标题】:How to use pattern matching in Binding.scala?如何在 Binding.scala 中使用模式匹配?
【发布时间】:2017-11-28 01:30:40
【问题描述】:

我有以下型号:

case class CarBinding(ownerId: Var[String], specs: Var[Option[Specs]])

Specs 是一个特征,具有以下具体类型:

trait Specs {

    def name: String

}

case class SportsCarSpecs(name: String, details: Details) extends Specs

在我的 Scala.js 应用程序中,我现在想创建一个表格并列出所有条目:

@dom
  def buildTable(): Binding[BindingSeq[Node]] = {
    val data = Vars.empty[CarBinding]
    /* Initial population. */
    // Some code...
      <br/>
        <table class="table table-bordered table-hover">
          <thead>
            <tr>
              <th class="col-md-1">
                <small>Owner ID</small>
              </th>
              <th class="col-md-1">
                <small>Specs</small>
              </th>
            </tr>
          </thead>
          <tbody>
            {for (entry <- data) yield {
            <tr>
              <td>
                <small>
                  {entry.ownerId.bind}
                </small>
              </td>
              <td>
                <small>
                  {entry.specs.bind match {
                  case Some(SportsCarSpecs(name, details)) => {name} <span>{details.ps}</span>
                  case _ => -
                }}
                </small>
              </td>
            </tr>
          }}
          </tbody>
        </table>
      </div>
  }

但是,我收到以下错误:

 ';' expected but $XMLSTART$< found.
[error]                   case Some(SportsCarSpecs(name, details)) => {name} <span>{details.ps}</span>

我做错了什么?

【问题讨论】:

    标签: scala scala.js binding.scala


    【解决方案1】:

    这个:

    entry.specs.bind match {
      case Some(SportsCarSpecs(name, details)) => {name} <span>{details.ps}</span>
      case _ => -
    }
    

    不是一个有效的表达式,因此您不能在 XML 文字中插入它。如果您在两个分支中都有完整的 XML 表达式,它应该可以工作。所以我能看到的最简单的解决方法是将&lt;small&gt; 拉到里面:

              <td>
                {entry.specs.bind match {
                  case Some(SportsCarSpecs(name, details)) => <small>{name} <span>{details.ps}</span></small>
                  case _ => <small>-</small>
                }}
              </td>
    

    【讨论】:

      猜你喜欢
      • 2016-07-17
      • 2012-07-22
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 2018-10-02
      • 2017-08-12
      • 2013-01-29
      相关资源
      最近更新 更多