young
(rtSwift)
1
struct BoxView<SelectionValue: Hashable>: View {
vs.
struct BoxView<SelectionValue>: View where SelectionValue: Hashable {
?? Both compile just fine in this case. But sometime I think I have to use where version. What's the different in these two? When to use which? Why Swift don't just allow only one style?
1 Like
SDGGiesbrecht
(Jeremy David Giesbrecht)
2
There is no semantic difference.
The top one predates the bottom one, but could not express as many things, such as constrained associated types (Something<T: Collection> where T.Element: Hashable). The older syntax was likely kept around simply for backward compatibility. Or possibly because it is shorter where it does work.
3 Likes
SDGGiesbrecht
(Jeremy David Giesbrecht)
3
Your choice. Some developers use only the second. Others use the first in every situation where it is sufficient, and only resort to the second when necessary.
2 Likes
young
(rtSwift)
4
Ok, I see now. The simpler form is easier to read for me. I will stick to the simpler form and use where only when needed.