Swift: соглашения о маскировании опций с псевдонимом типа? - PullRequest
0 голосов
/ 12 марта 2020

Есть ли соглашение об использовании псевдонима типа, который маскирует необязательный? Например, если я хочу создать псевдоним типа для подробного необязательного типа, такого как UnsafeMutablePointer<Bar>?, я могу сделать одно из следующего:

// Approach 1 - mask the optional in the type alias
typealias Foo = UnsafeMutablePointer<Bar>?

func bat(baz: Foo) { ... }

// Approach 2 - include the optional in the typealias usage where needed
typealias Foo = UnsafeMutablePointer<Bar>

func bat(baz: Foo?) { ... }

Эти подходы выполняют sh то же самое, хотя Я бы подумал, что второй предпочтительнее, потому что кажется более явным, что аргумент функции является необязательным.

Есть ли ситуации, когда первый подход может быть предпочтительным, и есть ли какие-либо рекомендации за / против такого использования?

...