<div dir="ltr">This does not seem very practical as there is a whole continuum of behaviors between pure value (like Int) and reference (like UIWindow) types. <div><br></div><div>Consider for example <div><br></div><div>NSURL: an object, but immutable</div><div>Array: a struct, but doesn&#39;t take extra space if copied without mutation<br><div>Either&lt;T, U&gt;: an enum is similar to a struct, but may very well wrap a mutable class instance</div><div> <br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 17, 2015 at 3:23 PM, Daniel Steinberg via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The way in which we reason about instances of value types and instances of reference types is significantly different and yet there is no way to easily distinguish them in Swift.<br>
<br>
In Objective-C, for example, if we have an NSDate and an NSTimeInterval we can tell that NSDate is a reference type and NSTimeInterval is a value type by looking at how it is used in code<br>
<br>
NSDate *myDate = //…<br>
NSTimeInterval someTimeInterval = //…<br>
<br>
The “*” helps us see that myDate is a pointer to an instance of NSDate.<br>
<br>
We see this in methods that return values as well<br>
<br>
- (NSString *)aStrringReturningMethod // …<br>
- (NSInteger)numberOfMistakesInThisEmail //...<br>
<br>
I realize that this is a result of Objective-C living in C’s world and we don’t have that constraint in Swift.<br>
<br>
However, this means that when the semantics of variables, parameters, properties, and return values from methods is not always clear in our code. Because structs can have methods in Swift it is all to easy to confuse an instance of a struct with an instance of a class.<br>
<br>
I may be alone here, but I think it would be less confusing if there were some way to distinguish between value types and reference types in code.<br>
<br>
Thank you,<br>
<br>
Daniel<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div><br></div>