【发布时间】:2013-05-16 02:47:29
【问题描述】:
在许多情况下,我发现我需要在函数的范围内创建长期存在的值,而这些数据不需要在类/对象范围内。
例如,
object Example {
def activeUsers = {
val users = getUsersFromDB // Connects to the database and runs a query.
users.filter(_.active)
}
}
上面,变量users在正确的范围内,但是每次调用函数activeUsers时它都会执行一个数据库查询。
为避免这种情况,我可以将变量 users 移到函数范围之外:
object Example {
val users = getUsersFromDB // Connects to the database and runs a query
def activeUsers = {
users.filter(_.active)
}
}
但这使它也可用于其他功能。
否则,我可以创建一个单独的对象来包含该函数:
object Example {
object activeUsers {
val users = getUsersFromDB // Connects to the database and runs a query.
def apply() = {
users.filter(_.active)
}
}
}
但这涉及更多样板代码、使用另一个对象以及与apply 相关的轻微语法异常。
- 在语言级别是否支持类似的内容?
- 如果没有,您在这种情况下是否使用了任何标准技术?
【问题讨论】:
标签: scala