对象中对象的顺序上循环的Scala

对象中对象的顺序上循环的Scala,scala,slick,scala-collections,Scala,Slick,Scala Collections,我有下面的案例课 case class BusinessInput(userId: String, name: String, location: Point, address: Option[String], phonenumber: Option[String], email: Option[String], hours: Seq[BusinessHoursInput]) 以及以下《营业时间》案例课程: case class BusinessHoursInput(weekDay: Int,

我有下面的案例课

case class BusinessInput(userId: String, name: String, location: Point, address: Option[String], phonenumber: Option[String], email: Option[String], hours: Seq[BusinessHoursInput])
以及以下《营业时间》案例课程:

case class BusinessHoursInput(weekDay: Int, startTime: Time, endTime: Time)
我正在使用Slick,并试图为BusinessInput的小时字段中的每个BusinessHoursinput对象向DB添加一个BusinessHours行。我尝试了以下方法:

_ <- for(businessHours <- businessInput.hours) BusinessHours += BusinessHoursRow(businessRow.businessId, businessHours.weekDay, businessHours.startTime, businessHours.endTime)
现在我得到了以下错误:

 value map is not a member of Unit
[error]     _ <- for(businessHours <- businessInput.hours) BusinessHours += BusinessHoursRow(businessRow.businessId, businessHours.weekDay, businessHours.startTime, businessHours.endTime )
[error]                            ^
scala.collection.immutable.ListMap$Node cannot be cast to dao.BusinessHoursInput

如果这一行在for YILD CONTRUMENT中,您需要更改第一个
问题是您使用的for CONTRUMENT转换为
映射。map需要将
hours:Seq[businesshours输入]
转换为其他内容。 在地图中,您正在执行以下操作:
BusinessHours+=BusinessHoursRow(businessRow.businessId,BusinessHours.weekDay,BusinessHours.startTime,BusinessHours.endTime)
此选项不会将
hours
转换为其他内容。它将
businesshoursrrow
添加到
BusinessHours
和该操作返回单元中

那么如何解决呢

1) 将
营业时间输入
转换为
营业时间行
,然后将其插入
营业时间

var businessHoursRows = businessInput.hours.map { businessHoursInput =>
    BusinessHoursRow(businessHoursInput.businessId, businessHoursInput.weekDay, 
    businessHoursInput.startTime, businessHoursInput.endTime)
}
BusinessHours ++= businessHoursRows
2) 使用
foreach
而不是
map

businessInput.hours.foreach { businessHoursInput =>
     businessHoursRows += BusinessHoursRow(businessHoursInput.businessId, businessHoursInput.weekDay, 
    businessHoursInput.startTime, businessHoursInput.endTime)
}

我不知道你是如何用
开始代码的。请先看一看,Scala哲学是如何关于不变性的(而不是像
+=
那样的突变)。
var businessHoursRows = businessInput.hours.map { businessHoursInput =>
    BusinessHoursRow(businessHoursInput.businessId, businessHoursInput.weekDay, 
    businessHoursInput.startTime, businessHoursInput.endTime)
}
BusinessHours ++= businessHoursRows
businessInput.hours.foreach { businessHoursInput =>
     businessHoursRows += BusinessHoursRow(businessHoursInput.businessId, businessHoursInput.weekDay, 
    businessHoursInput.startTime, businessHoursInput.endTime)
}