📜  通过示例在 Kotlin 中使用关键字

📅  最后修改于: 2022-05-13 01:55:20.710000             🧑  作者: Mango

通过示例在 Kotlin 中使用关键字

Kotlin 是 JetBrains 开发的一种静态类型的通用编程语言,构建了 IntelliJ IDEA、PhpStorm、Appcode 等世界一流的 IDE。它由 JetBrains 于 2011 年首次推出,是一种新的 JVM 语言。 Kotlin 是一种面向对象的语言,是一种比Java“更好的语言”,但仍可与Java代码完全互操作。在本文中,我们将讨论在 kotlin 中使用 use 关键字。在此之前,我希望您了解一些了解击球手的基础知识。

基本理念

在某些情况下,如果您使用资源(例如文件),则必须注意其生命周期,以免泄漏资源。例如,如果您从文件中读取,则需要在使用后将其关闭,否则您将使其处于不稳定状态。 Java 7 带来了一个更新,无需显式处理即可处理此问题。 Kotlin 也提供了此功能,但方式更简单。它通过使用use方法来做到这一点。所以让我们开始吧!

例子

下面我们通过以下步骤来了解 Kotlin 的使用函数:

第 1 步。要了解use关键字,我们需要回到Java。在Java 7 之前,管理需要关闭的资源有点麻烦。例如,看下面的代码:

Kotlin
private static void printFile() throws IOException {
  InputStream input = null;
  try {
    input = new FileInputStream ("sampleFile.txt");
    // Some operation using input object
  } finally {
    if(input != null){
      input.close();
      // closing the resource
    }
  }
}


Kotlin
try (FileInputStream input = new FileInputStream ("file. txt")) {
  int data-input.read();
  // operations on input object
}


Kotlin
FileInputStream ("file. txt") . use {
  input ->
  var data = input.read()
}


步骤 2.让我们检查前面的代码。我们知道,当我们使用输入对象时, try块内可能会引发异常。但是,它也可以在finally块中抛出,因为我们正在尝试关闭输入对象。现在无论 try 块是否抛出异常,都会调用finally块。假设 try 和 finally 块都抛出异常——两者中的哪一个会传播?答案是在finally块中会抛出异常,即使 try 的异常在这里更有意义。

第 3 步Java 7 通过引入 try-with-resource 结构对这个问题进行了更新,它看起来像这样:

科特林

try (FileInputStream input = new FileInputStream ("file. txt")) {
  int data-input.read();
  // operations on input object
}

步骤 4.try块执行完毕后, FileInputStream对象会自动关闭。此外,如果操作input.read( )和关闭输入对象抛出异常,则input.read()抛出的异常将传播。 Kotlin 的use关键字做同样的工作。在本节中,我们将看到如何。

第 5 步。在前面的示例中,如果我们实现use关键字,我们在Java中看到的在 Kotlin 中将如下所示:

科特林

FileInputStream ("file. txt") . use {
  input ->
  var data = input.read()
}

use接受函数字面量量,并被定义为可关闭实例的扩展。它将关闭资源,就像 try-with-resources 构造一样,在函数完成后,无论是否引发异常。