<div class="chatlog__message-group"> <div id="chatlog__message-container-426316226881650700" class="chatlog__message-container" data-message-id="426316226881650700"> <div class="chatlog__message"> <div class="chatlog__message-aside"><img class="chatlog__avatar" src="https://cdn.discordapp.com/avatars/189711109966659584/95280765d1be73ce985dce15ea3585f6.png?size=512" alt="Avatar" loading="lazy"></div> <div class="chatlog__message-primary"> <div class="chatlog__header"><span class="chatlog__author" style="color:rgb(237,171,161)" title="omochimetaru" data-user-id="189711109966659584">omochimetaru</span> <a href="/channels/306995750418513920?category=main&channel=swift-2&message_id=426316358704431107"><span class="chatlog__timestamp" title="Thursday, March 22, 2018 9:48 AM"></span></a><a href="#chatlog__message-container-426316226881650700">3/22/2018 9:48 AM</a></div> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-swift">protocol ValuePrinter { func print(_ x: Int) func print(_ x: String) } protocol IntOrString { func asInt() -> Int? func asString() -> String? } extension Int : IntOrString { func asInt() -> Int? { return self } func asString() -> String? { return nil } } extension String : IntOrString { func asInt() -> Int? { return nil } func asString() -> String? { return self } } class OmniValuePrinter : ValuePrinter { // oneshot double override! func print<X: IntOrString>(_ x: X) { if let i = x.asInt() { Swift.print(i) } if let s = x.asString() { Swift.print(s) } } } let printer = OmniValuePrinter() as ValuePrinter printer.print(3) printer.print("a")</code></span></div> </div> </div> </div> <div id="chatlog__message-container-426316358704431107" class="chatlog__message-container" data-message-id="426316358704431107"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, March 22, 2018 9:49 AM">9:49 AM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">おもしろいねえ・・・ TypeScript式オーバーロードを後付できる・・・</span> <span class="chatlog__edited-timestamp" title="Thursday, March 22, 2018 9:49 AM">(edited)</span></div> </div> </div> </div> </div>