gpt4 book ai didi

scala - 没有返回或分配的值会发生什么?

转载 作者:行者123 更新时间:2023-12-05 00:45:34 24 4
gpt4 key购买 nike

我遇到了一个函数:

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 的这个特性吗?

最佳答案

If there is no return then the last expression is taken to be the return value .

语句位置中的纯表达式不会做任何事情并被丢弃:

def foo = {
val x = 1
"hello" // discarded
x // returned as result of foo
}


关于副作用
Class.forName("com.mysql.jdbc.Driver")

this似乎是加载 JDBC 驱动程序的一种方式,现在是 deprecated :

Applications no longer need to explicitly load JDBC drivers using Class.forName(). Existing programs which currently load JDBC drivers using Class.forName() will continue to work without modification.



注意尽管 Class.forName没有被分配给任何东西并不意味着它什么都不做,它被认为是 open 的副作用在 open 范围之外改变程序的状态.

关于scala - 没有返回或分配的值会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56612540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com