【解決しました】
エラーを気にせずそのままコンパイルすると、何の問題もなく実行されました。
コードに間違いはなく、eclipseが勝手にエラーを吐いているだけだったようです。
================================================================================
Qiitaに投稿されていた記事を参考にScala,PlayFrameworkの学習を進めていたのですが,scalaのバージョンアップが原因なのか正常に動作しない箇所が複数あります.
インターネット上で情報を集めたのですが,プログラミング初心者ゆえに、かなかなか解決の糸口が見えません.
皆様のお力を貸していただきたく投稿させていただきました.
参考にさせていただいているのは,2017年07月29日に最後の更新がなされたこちらの記事「Play Frameworkハンズオン」です.
以下が私が現在開発を行っている環境になります.
console
$ java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
console
$ sbt sbt-version
.
.
[info] 0.13.11
「Play Frameworkハンズオン」にて掲載されていたコードは以下の通りになります。
/play-hands-on/app/services/Todo.scala
package services
case class Todo(name: String)
/play-hands-on/app/controllers/TodoController.scala
package controllers
import javax.inject._
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._
import services._
def list() = Action { implicit request: MessagesRequest[AnyContent] =>
val items: Seq[Todo] = Seq(Todo("Todo1"), Todo("Todo2"))
Ok(views.html.list(items))
}
/play-hands-on/app/views/list.scala.html
@import services._
@(items: Seq[Todo])
<html>
<head>
<title>Todo</title>
</head>
<body>
<section>
<table>
<thead>
<tr>
<th>名前</th>
</tr>
</thead>
<tbody>
@items.map { todo =>
<tr>
<td>@todo.name</td>
</tr>
}
</tbody>
</table>
<a href="/todo/new">登録画面</a>
</section>
</body>
</html>
以下は私がこのコードに少し変更を加えたコードへさらに「eclipse」で表示された警告などを書き足したものになります。
/play-hands-on/app/services/Todo.scala
package services
case class Todo(name: String)
/play-hands-on/app/controllers/TodoController.scala
package controllers
import javax.inject._
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._
import services._
//変更箇所
def list = Action {
val items: Seq[Todo] = Seq(Todo("Todo1"), Todo("Todo2"))
//itemsで「type mismatch; found : Seq[services.Todo] required: String」のエラー
Ok(views.html.list(items))
}
/play-hands-on/app/views/list.scala.html
@import services._
@(items: Seq[Todo])
<html>
<head>
<title>Todo</title>
</head>
<body>
<section>
<table>
<thead>
<tr>
<th>名前</th>
</tr>
</thead>
<tbody>
<!-- ここから -->
@items.map { todo =>
<tr>
<td>@todo.name</td>
</tr>
}
<!-- ここで「テキスト・ストリング(@items.map{ todo =>)が無効です。」の警告 -->
</tbody>
</table>
<a href="/todo/new">登録画面</a>
</section>
</body>
</html>
ここにどのような変更を加えれば意図した動きをするようなコードとなるのでしょうか。教えていただきたいです。