Kotlin 标准函数:run、with、let、also 和 apply

LiT*_*Tle 5 kotlin

我试图理解函数的正确使用(运行、使用、让、也应用)。假设我们有以下初始代码(我将它用于测试目的):

con = urlGet.openConnection() as HttpURLConnection
con.readTimeout = 10000
con.connectTimeout = 2000 
con.requestMethod = "GET"
con.doInput = true
con.connect()
inst = con.inputStream
Run Code Online (Sandbox Code Playgroud)

根据这张图片,我将其修改为:

con = urlGet.openConnection() as HttpURLConnection
inputStream = con.run {
   readTimeout = 10000
   connectTimeout = 2000
   requestMethod = "GET"
   doInput = true
   // Start the query
   connect()
   inputStream
}
Run Code Online (Sandbox Code Playgroud)

但根据我发现的一些指南,我认为我在那里做多项“工作”。

  • 修改初始 con 对象
  • 运行更多功能(连接)
  • 取回另一个对象(输入流)

所以,我觉得这更正确:

    con = urlGet.openConnection() as HttpURLConnection
    con.apply {
           readTimeout = 10000
           connectTimeout = 2000
           requestMethod = "GET"
           doInput = true
        }
    inputStream = con.run {
           // Start the query
           connect()
           inputStream
        }
Run Code Online (Sandbox Code Playgroud)

那些功能就这么严格分开吗?
是否有关于如何使用这些功能的指南(官方或非官方)?