跟我一起学“仓颉”编程语言-try-with-resources表达式

目录

一、try-with-resources表达式

二、小结


一、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表达式的内容,下一章,为大家带来异常处理练习题的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家!!!

你可能感兴趣的:(跟我一起学“仓颉”编程语言,仓颉编程语言,华为,仓颉服务端开发)