Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

iOS Swift 2.0 Collections and Control Flow Control Flow With Conditional Statements Working with Logical Operators

Ben Kachelhoffer
Ben Kachelhoffer
679 Points

Collections and Control Flow Code Challenge error

For the code challenge I get the error: n is a "let" constant. Why is this?

var results: [Int] = []

for n in 1...100 { // Enter your code below if n % 7 == 0 && n % 2 != 0 { results.append(n) n++ }else{ n++ } // End code }

logicalOperators.swift
var results: [Int] = []

for n in 1...100 {
    // Enter your code below
    if n % 7 == 0 && n % 2 != 0 {
    results.append(n)
    n++
    }else{
    n++
    }
    // End code 
}
Ben Kachelhoffer
Ben Kachelhoffer
679 Points

Never mind, I realised you cannot add to the counter in a for loop.

1 Answer

Close. But there's no need for you to increment n in the loop. That's what the loop does automatically.

for n in 1...100 {
    // Enter your code below
    // Enter your code below
    if n % 7 == 0 && n % 2 != 0 {
      results.append(n)
    }
    // End code 
}

When you say for n in 1...100 you are saying for each n in that range. So the first time through the loop n will be 1, the next time through it will be 2, etc.

What you were trying to do is change the value of n inside the loop, and swift was telling you you can't do that, as it considers n to be a constant.