Avatar
omochimetaru 12/5/2017 9:23 AM
[omochi@omochi-iMac swhash]$ cat b.swift struct Box<T> { let value: T } extension Box: Equatable where T: Equatable { static func == (lhs: Box, rhs: Box) -> Bool { return lhs.value == rhs.value } } [omochi@omochi-iMac swhash]$ swift --version Apple Swift version 4.1-dev (LLVM c698959a5c, Clang dff0a814ae, Swift 9fef06e59c) Target: x86_64-apple-darwin16.7.0 [omochi@omochi-iMac swhash]$ swift b.swift b.swift:6:1: error: conditional conformance of 'Box<T>' to 'Equatable' depends on an experimental feature (SE-0143) extension Box: Equatable where T: Equatable { ^ [omochi@omochi-iMac swhash]$ swift -enable-experimental-conditional-conformances b.swift [omochi@omochi-iMac swhash]$ echo $TOOLCHAINS org.swift.3020171204a
9:24 AM
やっぱりオプション入れないとダメでした 12/04版
9:25 AM
Hashableの生成について
9:25 AM
@_transparent public // @testable func _mixForSynthesizedHashValue(_ oldValue: Int, _ nextValue: Int) -> Int { return 31 &* oldValue &+ nextValue }
9:25 AM
31倍しながら足すようになってた。