我遇到了一个函数:
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")
这似乎是加载JDBC驱动程序的一种方式,现已弃用:
应用程序不再需要使用 Class.forName((。当前加载 JDBC 驱动程序的现有程序 使用 Class.forName(( 将继续工作而无需修改。
请注意,尽管Class.forName
没有分配给任何东西,但这并不意味着它什么都不做,它被认为是open
改变程序状态超出open
范围的副作用。