2つのアンコールスマートフォン用の表示で見る2つのアンコールこの広告は、90日以上更新していないブログに表示しています。2013の10日目です。ライブラリを開発していると、どうしても古くなり使って欲しくないAPIが出てくると思います。古いAPIは思い切って削除しても良いのですが、互換性を考えてしばらくの間、残しておくのがライブラリ利用者にとって親切でしょう。FrameworkではObsoleteAttributeを使って、コンパイラの警告として利用者に知らせることができます。簡単な使い方は、MSDNを参照してください。期待通りに動かないパターンがいくつかあります。動くパターンと動かないパターンをそれぞれコードで説明しようと思います。期待と反する動作をする場合にはコード中のコメントに"!"を付けました。レコードレコード定義にObsoleteAttributeをつけた例です。レコードの場合、型推論された時、Obsoleteなレコード型の警告が出ません。x.Aのパターンで推論された場合は警告が出ます。*)次は、レコードのメンバに対してObsoleteAttributeを付けた例です。Obsoleteなメンバの場合は期待通り動作するようです。ついては、どのパターンも期待通り動作します。判別共用体の定義にObsoleteAttributeを付けた例です。*)次は、判別共用体のケースに対してObsoleteAttributeを付けた例です。*)クラスクラス定義に対して、ObsoleteAttributeを付けた例です。変数の型を推論した場合に警告が出ません。型とコンストラクタ呼び出しに同じ名前を使いますが、別物のようです。*)実はこの、変数の型を推論した場合に警告が出ない問題は、C#の、変数のvar宣言にも存在します。次は、メンバに対して、ObsoleteAttributeを付けた例です。期待通りに動作します。*)次は、コンストラクタに対して、OsboleteAttributeを付けた例です。期待通りに動作します。*)モジュールモジュールの定義に対して、ObsoleteAttributeを付けた例です。期待通りに動作します。*)次は、モジュール内の変数に対してObsoleteAttributeを付けた例です。期待通りに動作します。*)次は、AutoOpenAttributeのついたモジュールに対して、ObsoleteAttributeを付けた例です。親モジュールをopenし、間接的にopenされた場合は警告が出ません。明示的にopenした場合は警告が出ます。*)まとめさまざまな例を挙げ、ObsoleteAttributeの動作を見てきました。結論としては、「型推論、AutoOpenといった暗黙的に使用される場合は警告が出ない」と言えそうです。ObsoleteAttributeを付けたのにライブラリ利用者に気づいてもらえなくて悲しいです。この問題に対して、次の対策がとれそうです。#FsAdventモジュールのアクセシビリティ管理を手抜きする実行時にCompiledNameが付いた型の元の名前を取得する月別アーカイブはてなブログをはじめよう!htid46さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。