-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Obj:pickを追加 #881
Obj:pickを追加 #881
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅ ❗ Your organization needs to install the Codecov GitHub app to enable full functionality.
|
言語のstdに入れるほどの汎用性を感じないというかユースケースがわからないのですが、どんな使い方を想定していますか? |
余計なキーを削除できるという点から、主な想定用途はモジュール化におけるアクセス制限です。 |
モジュール化のために既にあるオブジェクトのキーを絞るシチュエーションがわからないです |
// Obj:extract (keysにあってoにないキーはnull)
Obj:from_kvs(keys.map(@(key) { [key, o[key]] }))
// keysとoの両方にあるキーのみ抽出
Obj:from_kvs(Obj:kvs(o).filter(@([key]) { keys.incl(key) }))
// Obj:extract_with_default
Obj:merge(defaults, Obj:from_kvs(Obj:kvs(o).filter(@([key]) { Obj:has(defaults, key) }))) |
例えば読み書き両用のモジュールからget系メソッドのみを抽出する場合が考えられます。
|
extractは入れてもいいかもと思いました extract_with_defaultはstdに入れるにしては、ユーザーが簡単に定義できるし汎用性が欠けてる感じがします |
|
Co-authored-by: Take-John <takejohn@takejohn.jp>
関数
Obj:extractとObj:extract_with_defaultObj:pick
を追加します。doc
@obj:pick<T>(o: obj<T>, keys: arr<str>): obj<T>
オブジェクト
o
のプロパティのうち、キー名がkeys
に含まれるもののみを抽出します。keys
にあってo
にないキーはNULL
になります。