Bird
Raised Fist0
Swiftprogramming~20 mins

String is a value type behavior in Swift - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Swift String Value Type Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Swift code with strings?

Consider this Swift code where a string is assigned and then modified. What will be printed?

Swift
var greeting = "Hello"
var copy = greeting
greeting += ", world!"
print(copy)
ACompilation error
B"Hello, world!"
C"Hello"
D"world!"
Attempts:
2 left
💡 Hint

Remember that strings in Swift are value types, so copying creates a new independent value.

❓ Predict Output
intermediate
2:00remaining
What happens when you modify a copied string?

What will this Swift code print?

Swift
let original = "Swift"
var copy = original
copy.append(" Lang")
print(original)
A"Lang"
B"Swift Lang"
CRuntime error
D"Swift"
Attempts:
2 left
💡 Hint

Think about whether modifying copy changes original.

🔧 Debug
advanced
2:30remaining
Why does this code print two different strings?

Examine this Swift code. Why does it print two different strings?

Swift
var s1 = "Hi"
var s2 = s1
s2 = "Hello"
print(s1)
print(s2)
ABecause strings are value types, s1 and s2 are independent copies.
BBecause strings are reference types, s1 and s2 point to the same data.
CBecause s2 was not assigned properly, it defaults to s1.
DBecause print statements are delayed and show old values.
Attempts:
2 left
💡 Hint

Think about how value types behave when assigned and changed.

🧠 Conceptual
advanced
1:30remaining
Which statement about Swift strings is true?

Choose the correct statement about Swift strings and value type behavior.

AModifying a copied string changes the original string.
BAssigning a string to a new variable creates a separate copy.
CStrings are reference types and share the same memory by default.
DStrings cannot be copied or assigned to new variables.
Attempts:
2 left
💡 Hint

Recall how value types behave on assignment.

❓ Predict Output
expert
2:30remaining
What is the output of this Swift code with string mutation and copying?

Analyze this Swift code and determine what it prints.

Swift
var a = "Start"
var b = a
b += " End"
print(a)
print(b)
A"Start"\n"Start End"
B"Start End"\n"Start End"
CCompilation error
D"Start"\n"Start"
Attempts:
2 left
💡 Hint

Remember that strings are copied on assignment and changes to one do not affect the other.

Practice

(1/5)
1. In Swift, what happens when you assign one String variable to another and then change the new variable?
easy
A. The original string remains unchanged because strings are value types.
B. The original string also changes because strings are reference types.
C. Both strings become empty.
D. The program crashes due to memory error.

Solution

  1. Step 1: Understand String assignment in Swift

    Strings in Swift are value types, so assigning one string to another copies the value.
  2. Step 2: Effect of modifying the copied string

    Changing the copied string does not affect the original because they are separate copies.
  3. Final Answer:

    The original string remains unchanged because strings are value types. -> Option A
  4. Quick Check:

    String assignment copies value = original unchanged [OK]
Hint: Remember: Swift strings copy on assignment, no shared changes [OK]
Common Mistakes:
  • Thinking strings are reference types and share changes
  • Assuming original string changes after modifying copy
  • Confusing strings with classes or objects
2. Which of the following is the correct way to declare and copy a string in Swift?
easy
A. var original = "Hello"; var copy = original.clone()
B. var original = "Hello"; var copy = &original
C. var original = "Hello"; var copy = original.copy()
D. var original = "Hello"; var copy = original

Solution

  1. Step 1: Review Swift string assignment syntax

    Assigning one string to another copies the value directly using var copy = original.
  2. Step 2: Check other options for correctness

    Options A, B, and D use invalid syntax or methods not available for Swift strings.
  3. Final Answer:

    var original = "Hello"; var copy = original -> Option D
  4. Quick Check:

    Simple assignment copies string value [OK]
Hint: Copy strings by simple assignment, no special methods needed [OK]
Common Mistakes:
  • Using & operator which is for pointers, not strings
  • Trying to call clone() or copy() which don't exist for String
  • Confusing Swift with other languages' string methods
3. What will be the output of this Swift code?
var greeting = "Hello"
var newGreeting = greeting
greeting += ", world!"
print(newGreeting)
medium
A. Hello, world!
B. world!
C. Hello
D. HelloHello

Solution

  1. Step 1: Analyze string assignment and modification

    Assigning greeting to newGreeting copies the value "Hello".
  2. Step 2: Modify original string and check copied string

    Appending ", world!" to greeting does not affect newGreeting, which remains "Hello".
  3. Final Answer:

    Hello -> Option C
  4. Quick Check:

    Copied string unchanged after original modified [OK]
Hint: Changing original string doesn't change copied string [OK]
Common Mistakes:
  • Assuming newGreeting changes when greeting changes
  • Expecting concatenated string in newGreeting
  • Confusing value and reference types
4. Identify the error in this Swift code related to string value type behavior:
var text1 = "Swift"
var text2 = text1
text2 += " Rocks"
print(text1)
medium
A. text1 will print "Swift Rocks" because strings are reference types.
B. text1 will print "Swift" because strings are value types and text2 is a copy.
C. The code will cause a compile-time error due to append on text2.
D. text1 will be empty because text2 overwrites it.

Solution

  1. Step 1: Understand string copying behavior

    Assigning text1 to text2 copies the string value.
  2. Step 2: Effect of appending to copied string

    Appending " Rocks" to text2 does not affect text1, which remains "Swift".
  3. Final Answer:

    text1 will print "Swift" because strings are value types and text2 is a copy. -> Option B
  4. Quick Check:

    Appending copy doesn't change original string [OK]
Hint: Appending copy string doesn't affect original string [OK]
Common Mistakes:
  • Thinking append changes original string
  • Expecting reference type behavior for strings
  • Confusing append method usage
5. You want to create a function in Swift that takes a string, modifies it, and returns the modified string without changing the original. Which approach correctly uses string value type behavior?
hard
A. func modify(_ input: String) -> String { var copy = input; copy += "!"; return copy }
B. func modify(_ input: inout String) { input += "!" }
C. func modify(_ input: String) { input += "!" }
D. func modify(_ input: String) -> Void { input += "!" }

Solution

  1. Step 1: Understand function parameter passing for strings

    Strings are value types, so passing by value copies the string.
  2. Step 2: Check which function modifies copy and returns it

    func modify(_ input: String) -> String { var copy = input; copy += "!"; return copy } creates a copy, modifies it, and returns the new string, leaving original unchanged.
  3. Step 3: Analyze other options

    func modify(_ input: inout String) { input += "!" } modifies original via inout; Options A and C try to modify input but don't return changes.
  4. Final Answer:

    func modify(_ input: String) -> String { var copy = input; copy += "!"; return copy } -> Option A
  5. Quick Check:

    Modify copy and return it to keep original safe [OK]
Hint: Modify a copy inside function and return it to keep original safe [OK]
Common Mistakes:
  • Using inout modifies original string
  • Not returning modified string from function
  • Trying to modify input parameter directly without return
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard