<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 13 Jan 2017, at 10:43, Tony Freeman via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="margin: 0px; line-height: normal;" class=""><span style="font-family:'Helvetica Neue'" class="font">Hello Swift community,</span><br class=""></div><div class=""><br class=""></div><div class="">I found this very useful while wrapping c api,&nbsp;although this may simplify the code in other cases when subscript doesn't have it's own state and(or) share some state form the container.<br class=""></div><div class=""><br class=""></div><div class="">here is an example:&nbsp;<a href="https://gist.github.com/tonyfreeman/949ce0a9aa374ab6fa2fc7de0dccaa27" class="">https://gist.github.com/tonyfreeman/949ce0a9aa374ab6fa2fc7de0dccaa27</a><br class=""></div><div class=""><br class=""></div><div class="">another option would be use set/get functions, but it doesn't feel right.<br class=""></div><div class=""><br class=""></div><div style="margin: 0px; line-height: normal;" class=""><span style="font-family:'Helvetica Neue'" class="font">Thank you</span><br class=""></div><div class=""><br class=""></div>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""><div class="">I don’t see why it even needs to have a name in that example. Why not just make it a regular subscript? The meaning should be obvious since you are passing a constant like “SO_REUSEADDR”. You could even make your own “SocketOption” enum to make things nicer:</div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><font face="Courier" class="">socket[.allowPortReuse] = true</font></div></blockquote><div class=""><br class=""></div><div class=""><span style="font-family: Arial;" class="">Subscript declarations are a little weird. They have an implicit&nbsp;“_” as their first parameter name, but you can override that and provide an explicit name.&nbsp;</span>So, you could write your subscript as “<font face="Courier" class="">subscript(option option: Int32) -&gt; Bool</font>”:</div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><font face="Courier" class="">socket[option: SO_REUSEADDR] &nbsp; &nbsp;// or&nbsp;</font></div><div class=""><font face="Courier" class="">socket[option: .allowPortReuse]</font></div><div class=""><font face="Courier" class=""><br class=""></font></div></blockquote>Would that suit your needs?<div class=""><br class=""></div><div class="">- Karl<br class=""><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><font face="Courier" class=""><br class=""></font></div></blockquote><br class=""></div></body></html>