Control Transfer Statements in Swift
You have definitely used the keyword
return or probably seen the keyword
break. These keywords change the order in which your code gets executed. They can transfer control from one piece of code to another. But there are actually five control transfer statements in Swift. And they are:
In the present article let’s cover the following questions:
- What are these keywords?
- When do each of them is used?
- Why it can be useful to use it?
For what these keywords are used?
As I mentioned above, you use these keywords to control the flow of your code. You can move it from one piece of code to another. And it can be very useful or even necessary for the logic of your program.
We will go briefly through each of them with examples of how and when to use it.
Break control statement allows ending the execution of an all control flow statement. It is used inside a loop or a
switch block to finish its execution and exit it earlier.
Consider the following example, where you want to iterate through an array of numbers, and when you find the number you are looking for, print it and end the loop because there is no need to iterate further, spend time and resources when the number was already found.
continue keyword is used inside a loop. It tells it to stop the current iteration and start the next one. It does not exit the loop entirely but starts again at the beginning of the next iteration.
Consider the following example, where you want to remove all duplicates in an array using a loop. When you iterate through the array and find that this number is already repeated in a temporary array, you use the
continue keyword to start the next iteration.
This keyword is used inside of the
switch statement. By default, when the
switch finds the first match, it executes the code associated with that specific case and ends the execution of the
However, for example, in the C language, you would need to use
break by the end of every case if you would not want it to fall through and execute another match. But in Swift, you do not need to use it, because as I mentioned previously when the code associated with the first matching case is executed, the whole
switch statement completes. And if you want to have a behavior where the
switch statement would continue looking for another match, you would need to use the
Consider the following example, where you would want to print all ranges that contain a specific number. And there may be an intersection between these ranges, which says that there is a possibility that more than just one range contains a specific number. But without the
fallthrough keyword, the
switch statement would execute only the first match.
I assume this is the keyword you are most familiar with. And that would not be a surprise because you will probably use it the most in your career out of these five keywords.
This keyword is straightforward and is used inside a function when you want to return some value.
Consider the following example where you want to double a number and return the result from a function.
There often may be a situation where your function can produce an error. In this case, you can mark your function as a throwing function using the keyword
throws in the function’s declaration after its parameters.
Now inside this throwing function, you can throw an error in the place where it can appear.
Consider the following example, where you want to check whether a music player can play a specific song. If a song does exist, then the player plays it. Otherwise, it throws an error that the song you are trying to play is not added to your playlist using the keyword
You will also have to handle this error, or it will just simply crash your application.
To sum up everything, these five keywords:
throw are used to control the flow of your program and can move it from one place to another. Each of these keywords is used for specific cases, but every one of them is very powerful and handful.
Thanks for reading!
if you enjoyed this article, be sure to give it a clap so others will find it more easily.