Avatar
https://forums.swift.org/t/question-re-5-3-function-builder-enhancement-let-is-allowed/38055/12 Dictionary[_:default:] がデフォルト値を元のDictionaryに挿入してくれないのを解決するために Dictionary[_:orInsert:] っていうのを付加してるんだけど、その実装が面白い。 extension Dictionary { public subscript(key: Key, orInsert value: @autoclosure () -> Value) -> Value { mutating get { // We have to "mutate" the result of subscript[_:default:] in order // to ensure an entry gets added, so we pass it inout to a function. return { $0 }(&self[key, default: value()]) } } } { $0 }(&mutableValue) で値を返すと同時に $0inout と解釈されて mutableValue の setter がトリガーされる。 (edited)