scala - 没有返回或分配的值会发生什么?
问题描述
我遇到了一个功能:
def open(partitionId: Long,version: Long): Boolean = {
Class.forName("com.mysql.jdbc.Driver")
connection = DriverManager.getConnection(url, user, pwd)
statement = connection.createStatement
true
}
函数中的第一个和最后一个语句不做任何事情。我知道Class.forName
返回的是什么,但是返回的值没有在任何地方使用,也没有赋值。同样的事情true
。就true
在代码中间。
你能向我解释一下Scala的这个特性吗?
解决方案
语句位置中的纯表达式不会做任何事情并被丢弃:
def foo = {
val x = 1
"hello" // discarded
x // returned as result of foo
}
关于副作用
Class.forName("com.mysql.jdbc.Driver")
应用程序不再需要使用 Class.forName() 显式加载 JDBC 驱动程序。当前使用 Class.forName() 加载 JDBC 驱动程序的现有程序将继续工作而无需修改。
请注意,尽管Class.forName
没有被分配给任何东西,但这并不意味着它什么都不做,它被认为是open
在open
.
推荐阅读
- javascript - 当他的孩子通过键盘导航获得焦点时如何显示元素?
- c# - 运行 dc.BeginDialogAsync(...) 不会将对话框放入堆栈
- android-emulator - 世博会弹出后:无法在空对象上获取属性“absolutePath”
- email - 如何让用户通过他们的默认电子邮件应用程序发送反馈
- python - Django webapp 无法在 ipad(csrf_token) 和 IE(CORS) 上运行错误
- parsing - 解析任何语言的非 json/xml txt 文件
- node.js - Mocha 变量已初始化,但使用时为空
- c++ - 为什么 B 类中的 f2 被 D 类中的 f2 覆盖
- spring-cloud-contract - 定义合同 DSL 以将 JSON 元素的数量从请求发送到响应
- c# - 如何在 ItemsControl 中实现 DependencyProperty