Lev*_*anu 1 dictionary scala object
试图了解基本的Scala概念.为什么这段代码没有编译?
case class User(
id: Int,
firstName: String,
lastName: String,
age: Int,
gender: Option[String])
object UserRepository {
val users = Map
( 1 -> User(1, "John", "Doe", 32, Some("male")),
2 -> User(2, "Johanna", "Doe", 30, None)
)
//def findById(id: Int): Option[User] = users
//def findAll = users.values
def getUsers() = { users }
}
for ((k,v) <- UserRepository.getUsers() ){
println(v)
}
Run Code Online (Sandbox Code Playgroud)
错误:(25,42)值过滤器不是对象的成员cala.collection.immutable.Map for((k,v)< - UserRepository.getUsers()){
我期望val用户持有Map?
简单的地图工作正常:
val simpleMap = Map (1 -> "First", 2 -> "Second")
for ((k,v) <- simpleMap ){
println(v)
}
Run Code Online (Sandbox Code Playgroud)
val users = Map
( 1 -> User(1, "John", "Doe", 32, Some("male")),
2 -> User(2, "Johanna", "Doe", 30, None)
)
Run Code Online (Sandbox Code Playgroud)
这是两个单独的表达式:首先你做val users = Map(在Scala中有效,并将类型的伴随对象分配Map给users),然后评估
( 1 -> User(1, "John", "Doe", 32, Some("male")),
2 -> User(2, "Johanna", "Doe", 30, None)
)
Run Code Online (Sandbox Code Playgroud)
扔掉结果.如果通过移动(到上面的行告诉编译器定义尚未结束,它将起作用:
val users = Map(
1 -> User(1, "John", "Doe", 32, Some("male")),
2 -> User(2, "Johanna", "Doe", 30, None)
)
Run Code Online (Sandbox Code Playgroud)