Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialNOUR A ALGHAMDI
Courses Plus Student 5,607 Pointsi can't understand why?
Hello every one . . .
enum Proposition {
case True(String),
False (String)
}
let proposition = Proposition.True("it is a proposition")
switch proposition {
case .True(let T):
println(T)
case .False(let F):
println(F)
}
I want to ask about this part of raw value :
let proposition = Proposition.True("it is a proposition")
why we can't edit two strings one to tell if it a Proposition and other one to tell if it's not ?!
One other thing, why we have to assign a let or var in this part:
case.True(let T)
4 Answers
NOUR A ALGHAMDI
Courses Plus Student 5,607 Pointsi meant why we can't write some thing like that : let proposition = Proposition.True("it is a proposition"),Proposition.False("it's not a prposition") !!
Tommy Choe
38,156 PointsAre you sure that you don't want to use raw value instead of associated value? That way you can just get the rawValue property once you set .True or .False. Let me show you what I mean.
enum Proposition: String {
case True = "it is a proposition",
False = "it is not a proposition"
}
let proposition = Proposition.True
switch proposition {
case .True:
print(proposition.rawValue)
case .False:
print(proposition.rawValue)
}
// prints out: it is a proposition
Let me know if you're trying to do something else.
NOUR A ALGHAMDI
Courses Plus Student 5,607 Pointsthank you tommy choe :)
Tommy Choe
38,156 PointsNo problem Nour. Happy coding!
Ghaith Ali
3,134 PointsNoor, I am not sure if my answer will help, but I think you are mixing between enums raw values and enum associated vaules. A raw value is when you give the value during the creating of the enum:
enum Size: Int {
case Big = 1 , Medium = 2, Small = 3
}
let biggestSize = Size(rawValue: 1)
while an associated value is a value assigned when creating an instance of the enum, ex:
enum Size {
case Big (Int) , Medium (Int), Small(Int)
}
let biggestSize = Size.Big(41)
notice that in the case of associated values, we give the value when creating an instance of the enum.
regarding the other question: we assign let or var to the line:
case.True(let T)
to extract the associated value we parsed before. hope my explaining helped.
NOUR A ALGHAMDI
Courses Plus Student 5,607 PointsGhaith Ali شكراً لك غيث ، اجابتك على السؤال الثاني كانت افية :)
Ghaith Ali
3,134 Pointsالعفو زين كدرت اساعدك شوية :)
Tommy Choe
38,156 PointsTommy Choe
38,156 PointsHey Nour,
I'm not sure what you're asking when you say "why we can't edit two strings one to tell if it a Proposition and other one to tell if it's not ?!"