【问题标题】:Scala playframework skipping over if statementScala playframework 跳过 if 语句
【发布时间】:2012-06-28 15:53:42
【问题描述】:

这是我的代码:

package controllers

import play.api._
import play.api.mvc._
import play.api.data.Form
import play.api.data.Forms.tuple
import play.api.data.Forms.text


object Application extends Controller {

  def index = Action {
Ok(views.html.index("Your new application is ready."))
}

val form = Form(
tuple(
  "x_card_num" -> text,
    "x_exp_date" -> text,
    "exp_year" -> text,
    "exp_month" -> text,
    "x_card_code" -> text,
    "x_first_name" -> text,
    "x_last_name" -> text,
    "x_address" -> text,
    "x_city" -> text,
    "x_state" -> text,
    "x_zip" -> text,
    "save_account" -> text
  )
)

def payment = Action { implicit request =>
def values = form.bindFromRequest.data


val x_card_num = if (values isDefinedAt "x_card_num") values("x_card_num") else ""
val x_exp_date = if (values isDefinedAt "x_exp_date") values("x_exp_date") else ""
val exp_year = if (values isDefinedAt "exp_year") values("exp_year") else ""
val exp_month = if (values isDefinedAt "exp_month") values("exp_month") else ""
val x_card_code = if (values isDefinedAt "x_card_code") values("x_card_code") else ""
val x_first_name = if (values isDefinedAt "x_first_name") values("x_first_name") else ""
val x_last_name = if (values isDefinedAt "x_last_name") values("x_last_name") else ""
val x_address = if (values isDefinedAt "x_address") values("x_address") else ""
val x_city = if (values isDefinedAt "x_city") values("x_city") else ""
val x_state = if (values isDefinedAt "x_state") values("x_state") else ""
val x_zip = if (values isDefinedAt "x_zip") values("x_zip") else ""
val save_account = if (values isDefinedAt "save_account") values("save_account") else ""

val message = if (save_account=="save_account")   {
    val test = "it is saved"
    "account saved"
} else {
    val test= "it is not saved"
    ""
}

      Ok(views.html.payment(message,x_card_num,x_exp_date,exp_year,exp_month,x_card_code,x_first_name,x_last_name,x_address,x_city,x_state,x_zip,save_account))
}

}

由于某种原因,变量 test 没有在以下 if 语句中定义:

val message = if (save_account=="save_account")   {
    val test = "it is saved"
    "account saved"
} else {
    val test= "it is not saved"
    ""
}

现在变量 test 没有设置。它设置消息变量,但不设置测试变量。

【问题讨论】:

  • 您正在尝试像使用 PHP 一样使用 Scala。请阅读有关 Scala 的书!这是连续第三个问题,绝对是可以在任何书中阅读的基本内容。

标签: scala playframework


【解决方案1】:

您在代码块中声明val message,并在外部使用它。

你可以这样做:

val message = if (save_account=="save_account")   {
        "account saved"
    } else {
        ""
    }

【讨论】:

  • 不能在 if else 语句中声明新变量吗?这对我来说很奇怪。
  • 问题不一样了……你应该搜索一些关于“范围”“上下文”和“变量声明”的信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多