目录
一、try-with-resources表达式
二、小结
try-with-resources表达式可以保证资源在使用完毕后自动关闭。try-with-resources表达式与try表达式之间的区别:
try-with-resources表达式的try的后面有(),在圆括号里面有1或多个资源实例化;try-with-resources表达式中的try可以独立存在,可以没有catch块和finally块。
package Study
class ResourceClass1 <: Resource {
// 表示资源是否关闭的标记, 默认没关闭
var flag = false
public override func isClosed() {
return flag
}
public override func close() {
this.flag = true
println("关闭资源")
}
public func show() {
println("使用资源")
}
}
main() {
try (resource = ResourceClass1()) {
resource.show()
}
}
多个资源的使用
package Study
class ResourceClass1 <: Resource {
// 表示资源是否关闭的标记, 默认没关闭
var flag = false
public override func isClosed() {
return flag
}
public override func close() {
this.flag = true
println("关闭资源1")
}
public func show() {
println("使用资源1")
}
}
class ResourceClass2 <: Resource {
// 表示资源是否关闭的标记, 默认没关闭
var flag = false
public override func isClosed() {
return flag
}
public override func close() {
this.flag = true
println("关闭资源2")
}
public func show() {
println("使用资源2")
}
}
main() {
try (
resource1 = ResourceClass1(),
resource2 = ResourceClass2()
) {
resource1.show()
resource2.show()
}
}
注意:这里,先实例化资源1,在实例化资源2,接着使用资源1的代码,然后使用资源2的代码,最后,先释放资源2的代码资源,然后才是释放资源1的代码资源。
资源依赖的使用
package Study
class ResourceClass1 <: Resource {
// 表示资源是否关闭的标记, 默认没关闭
var flag = false
public override func isClosed() {
return flag
}
public override func close() {
this.flag = true
println("关闭资源1")
}
public func show() {
println("使用资源1")
}
}
class ResourceClass2 <: Resource {
var flag = false
var resource: ResourceClass1 = ResourceClass1()
public override func isClosed() {
return flag
}
public override func close() {
resource.close()
println("在资源2里关闭资源1成功")
if (!this.flag) {
this.flag = true
println("关闭资源2")
}
}
public func show() {
resource.show()
println("使用资源2")
}
}
main() {
try (
resourse = ResourceClass2()
) {
resourse.show()
}
}
注意:资源2类里面使用了资源类1,在使用和释放资源的时候,会先使用资源1,然后使用资源2,在关闭的时候,资源2里的资源关闭,会先把资源1关闭,在关闭资源2的资源。
本章为大家详细的介绍了仓颉编程语言中try-with-resources表达式的内容,下一章,为大家带来异常处理练习题的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家!!!