Skip to content

explicit_init

Ian Applebaum edited this page Jun 13, 2020 · 1 revision

Explicit Init

Explicitly calling .init() should be avoided.

  • Identifier: explicit_init
  • Enabled by default: Disabled
  • Supports autocorrection: Yes
  • Kind: idiomatic
  • Analyzer rule: No
  • Minimum Swift compiler version: 3.0.0
  • Default configuration: warning

Non Triggering Examples

import Foundation; class C: NSObject { override init() { super.init() }}
struct S { let n: Int }; extension S { init() { self.init(n: 1) } }
[1].flatMap(String.init)
[String.self].map { $0.init(1) }
[String.self].map { type in type.init(1) }
Observable.zip(obs1, obs2, resultSelector: MyType.init).asMaybe()
Observable.zip(
  obs1,
  obs2,
  resultSelector: MyType.init
).asMaybe()

Triggering Examples

[1].flatMap{String.init($0)}
[String.self].map { Type in Type.init(1) }
func foo() -> [String] {
  return [1].flatMap { String.init($0) }
}
Observable.zip(
  obs1,
  obs2,
  resultSelector: { MyType.init($0, $1) }
).asMaybe()
Clone this wiki locally