title: Why I can't use let in protocol in Swift?
body: <p>I have a doubt about protocols in Swift about the use of <strong>var</strong> and the <strong>keywords { get set }</strong>.</p>
  
  <p>From <a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html" rel="noreferrer">Apple documentation</a>:</p>
  
  <blockquote>
    <p>If a protocol requires a property to be gettable and settable, that
    property requirement cannot be fulfilled by a constant stored property
    or a read-only computed property. If the protocol only requires a
    property to be gettable, the requirement can be satisfied by any kind
    of property, and it is valid for the property to be also settable if
    this is useful for your own code.</p>
    
    <p>Property requirements are always declared as variable properties,
    prefixed with the var keyword. Gettable and settable properties are
    indicated by writing { get set } after their type declaration, and
    gettable properties are indicated by writing { get }.</p>
  </blockquote>
  
  <p>I can't understand why I can't use <strong>let</strong>. A <strong>var</strong> in a protocol with only <strong>get</strong> isn't just a <strong>let</strong>?</p>
  
  <p>Something like this:</p>
  
  <pre><code>protocol someProtocol 
  {
     var someProperty: String { get }
  }
  </code></pre>
  
  <p>it would not be just:</p>
  
  <pre><code>protocol someProtocol 
  {
     let someProperty: String
  }
  </code></pre>
  
  <p>I'm missing something?</p>