Avatar
omochimetaru 4/26/2017 2:38 AM
あ、違うか、継承は実在するのか
2:39 AM
[PARAM] path: 文字列、または類似のオブジェクトを与えます。 実際には to_str に反応するオブジェクトなら何でも構いません。
2:39 AM
例えばこれとかなんですけど、これって、Swiftできちんと考えると
2:39 AM
class Pathname { init<P: ToStrProtocol>(path: P) { ... } }
2:40 AM
ようするにこういうシグネチャなんですけど
2:40 AM
今ユーザーQがライブラリAの型Fooをこれに渡してる時、
2:40 AM
このToStrProtocolは静的検査されないんで、 ライブラリAがアップデートでそれを削除した瞬間に
2:40 AM
実行時エラーが潜伏することになる
2:40 AM
Crystalならコンパイルエラーになる
2:41 AM
「to_strなんか消さないだろ」みたいなコンセンサスをみんなが守ってるから壊れない。
2:43 AM
そっちを優先するという立場があってもおかしくはない。
それはそうだけど、「徹底しないといけない」理由はよくわからないです。少し入れるのも完全に入れるのも、入ってくるメリットとデメリットが同時に増大するかどうかの違いで、同じことに思います