4

I am trying to understand the correct use of the functions (run, with, let, also, apply). Let's say we have the following initial code (I am using it for testing purposes):

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

According to this image I modified it to:

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

But according to some guides I found, I think that I am doing multiple "jobs" there.

  • modify the initial con object
  • run some more functions (connect)
  • get another object back (inputstream)

So, I am feeling that this is more correct:

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

Are those functions so strictly separated?
Are there any guides (official or not) on how to use these functions?

2
  • 1
    One general idiom is to use apply inline: con = (urlGet.openConnection() as HttpUrlConnection).apply { ... }. It's like extending the initialization procedure. Commented Apr 30, 2018 at 13:40
  • stackoverflow.com/questions/45582732/… Commented May 1, 2018 at 6:16

1 Answer 1

2

According to the official guildelines you should be using run because you return a different value from the block. So your first code is correct:

con = urlGet.openConnection() as HttpURLConnection
inputStream = con.run {
   readTimeout = 10000
   connectTimeout = 2000
   requestMethod = "GET"
   doInput = true
   // Start the query
   connect()
   inputStream
}
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.