UPGRADE YOUR SKILLS: Learn advanced Swift and SwiftUI on Hacking with Swift+! >>

Solved: HWS Checkpoint 9

Forums > 100 Days of SwiftUI

Days 13 & 14 were definitely a bit tough and had to think about things. But I think I have the proper solution...

// Checkpoint 9
// Will return a single Int if at least one exists in the array passed in
// Otherwise will return a random number between 1 and 100 if either
//   the array doesn't exist (nil) or exist but is empty.

func getRandomInteger(sourceArray: [Int]?) -> Int {
    return sourceArray?.randomElement() ?? Int.random(in: 1...100)

var myIntegers:[Int]? = [1, 6, 8]                                 // Source array

var randomeNumber  = getRandomInteger(sourceArray: nil)           // Gives a random number because there is no array
randomeNumber      = getRandomInteger(sourceArray: myIntegers)    // Gives one of the three numbers
myIntegers?.removeAll()                                           // Makes array empty but still exist
myIntegers == nil                                                 // Prints "false" shows array is empty but NOT nil
randomeNumber      = getRandomInteger(sourceArray: myIntegers)    // Gives a random number because array is empty


+10 points for testing the empty array. Nice.

Everyone tests with a sample array. Some will test for the nil case. Nice to see you also test the empty array case.

+10 points for equal sign and comment alignment. This is a style few adopt. But I use it, and think it makes your code look well organized.

-2 for parameter name


This is very subjective comment. But when you write code for yourself, you know exactly what you logic is, your expected parameters, and desired output. Go crazy with how you name things.

But at some point, you'll be sharing your carefully crafted functions, classes, and custom views with your team. Do they know your intentions?

Consider how you name your function's parameters. Which of these seems more natural?

getRandomInteger(sourceArray: [Int]?) -> Int

// or -------

getRandomInteger(from sourceArray: [Int ]?) -> Int

In the second case, your teammate's code will read getRandomInteger(from: anArrayOfIntegers) And Xcode will tell coders that the array must be an array of integers, or it could be nil.

It's your choice, of course. But consider how a different parameter name can make the code read more naturally.

Keep Coding!



Well I figure since I got +20 points I can absorb a -2...

But adding "from" makes it more readable for sure. As I wrote code in the past (now 60+ aged), I alway paid attention to naming as I agree it is key to looking at something later yourself or a team member. I guess I just wasn't thinking much about it here other than very general. Will focus a bit more going forward.

I also line things up as much as practical. Not everything but where it makes sense. Always have so thinks for noticing...

Keep up the excellent monitoring and critiquing!


Hacking with Swift is sponsored by RevenueCat

SPONSORED Take the pain out of configuring and testing your paywalls. RevenueCat's Paywalls allow you to remotely configure your entire paywall view without any code changes or app updates.

Learn more here

Sponsor Hacking with Swift and reach the world's largest Swift community!

Reply to this topic…

You need to create an account or log in to reply.

All interactions here are governed by our code of conduct.

Unknown user

You are not logged in

Log in or create account

Link copied to your pasteboard.