<div class="chatlog__message-group">
  <div id="chatlog__message-container-554705142314827797" class="chatlog__message-container" data-message-id="554705142314827797">
    <div class="chatlog__message">
      <div class="chatlog__message-aside"><img class="chatlog__avatar" src="https://cdn.discordapp.com/avatars/293624673265123328/accd07acc220a18568ba46a6e9ede18a.png?size=512" alt="Avatar" loading="lazy"></div>
      <div class="chatlog__message-primary">
        <div class="chatlog__header"><span class="chatlog__author" style="color:rgb(17,128,106)" title="koher" data-user-id="293624673265123328">koher</span> <a href="/channels/306995750418513920?category=main&amp;channel=swift-2&amp;message_id=554707763192659981"><span class="chatlog__timestamp" title="Monday, March 11, 2019 4:40 PM"></span></a><a href="#chatlog__message-container-554705142314827797">3/11/2019 4:40 PM</a></div>
        <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><code class="chatlog__markdown-pre chatlog__markdown-pre--inline">associatedtype</code> を確定する <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">typealias</code> とは別ですが、一般的な <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">typealias</code> は今回の Proposal 外の Future Directions に入ってるので、 <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">protocol</code> でも将来的なサポートになるかもです。 <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0244-opaque-result-types.md#opaque-type-aliases">https://github.com/apple/swift-evolution/blob/master/proposals/0244-opaque-result-types.md#opaque-type-aliases</a></span> <span class="chatlog__edited-timestamp" title="Monday, March 11, 2019 4:40 PM">(edited)</span></div>
        <div class="chatlog__embed">
          <div class="chatlog__embed-color-pill" style="background-color:rgba(30,35,39,255)"></div>
          <div class="chatlog__embed-content-container">
            <div class="chatlog__embed-content">
              <div class="chatlog__embed-text">
                <div class="chatlog__embed-title"><a class="chatlog__embed-title-link" href="https://github.com/apple/swift-evolution/blob/master/proposals/0244-opaque-result-types.md">
                    <div class="chatlog__markdown chatlog__markdown-preserve">apple/swift-evolution</div>
                  </a></div>
                <div class="chatlog__embed-description">
                  <div class="chatlog__markdown chatlog__markdown-preserve">This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - apple/swift-evolution</div>
                </div>
              </div>
              <div class="chatlog__embed-thumbnail-container"><a class="chatlog__embed-thumbnail-link" href="https://images-ext-1.discordapp.net/external/fj7m7VLuaV_seT8bPYkMDFODFrNdHunv8fIJancJpw4/%3Fs%3D400%26v%3D4/https/avatars2.githubusercontent.com/u/10639145"> <img class="chatlog__embed-thumbnail" src="https://images-ext-1.discordapp.net/external/fj7m7VLuaV_seT8bPYkMDFODFrNdHunv8fIJancJpw4/%3Fs%3D400%26v%3D4/https/avatars2.githubusercontent.com/u/10639145" alt="Thumbnail" loading="lazy"> </a></div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <div id="chatlog__message-container-554706045776297994" class="chatlog__message-container" data-message-id="554706045776297994">
    <div class="chatlog__message">
      <div class="chatlog__message-aside">
        <div class="chatlog__short-timestamp" title="Monday, March 11, 2019 4:43 PM">4:43 PM</div>
      </div>
      <div class="chatlog__message-primary">
        <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">とりあえず、↑の実験から、 <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">associatedtype</code> の型を具象型側で <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">some Foo</code> にした場合、 <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">some Foo</code> を返す複数 API 間で同一の型として扱えそうです。</span></div>
      </div>
    </div>
  </div>
  <div id="chatlog__message-container-554707763192659981" class="chatlog__message-container" data-message-id="554707763192659981">
    <div class="chatlog__message">
      <div class="chatlog__message-aside">
        <div class="chatlog__short-timestamp" title="Monday, March 11, 2019 4:50 PM">4:50 PM</div>
      </div>
      <div class="chatlog__message-primary">
        <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">=== 明示的に記述しなければ <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">(some Foo)?</code> 作れた<img loading="lazy" class="chatlog__emoji " alt="🤔" title="thinking" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f914.svg">
            <code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-swift">protocol Foo {} extension Int: Foo {} protocol P { associatedtype F: Foo func foo() -&gt; F func fooOrNil() -&gt; F? } struct S: P { func foo() -&gt; __opaque Foo { return 42 } func fooOrNil() -&gt; F? { return Bool.random() ? foo() : nil } } let s = S() var a = s.fooOrNil() print(String(describing: a)) let b: Int? = -1 a = b // Error</code>
            <code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">/path/to/opaque-result-3.swift:19:5: error: cannot assign value of type 'Int?' to type '(__opaque main.(file).S.foo()@/path/to/opaque-result-3.swift:10:10)?' a = b // Error ^ as! (__opaque main.(file).S.foo()@/path/to/opaque-result-3.swift:10:10)</code></span> <span class="chatlog__edited-timestamp" title="Monday, March 11, 2019 4:50 PM">(edited)</span></div>
      </div>
    </div>
  </div>
</div>