2016-12-12 8 views
4

Недавно я заметил, что некоторые коды делают инициализации экземпляров как ClassName.self(), например:Что такое само название для имени класса? Swift 3

let realm = try! Realm.self() 

С выхода и использования после этого, он так же, как как будто без него - Realm()

Есть ли какая-либо конкретная причина или использование для выполнения init с .self?

+1

У вас есть ссылка, где используется 'self()'? На https://realm.io/docs/swift/latest/ я вижу только 'let realm = try! Realm() '- и это не имеет значения. –

+0

@MartinR Это на самом деле из кодов, переданных мне, как я упоминал в вопросе, использование после того, как такое объявление является нормальным, например. пытаться! realmUpdate.write, так что я не мог понять, почему существует необходимость в себе во время объявления. –

ответ

1

Это несколько предположения, но я считаю, что места, которые делают использования Type.self() в контексте Realm следует misperceived конвенции, следовало (некоторые невпопад) эффекты Swift команды разрешение ошибки

следующая совершить по команде Realm была в рамках подготовки к ожидаемому решению ошибки выше:

Вполне возможно, что изменения выше фиксаций (Type обновлены до Type.self, в соответствующем контексте) вдохновила базу коды, которые используют Realm также делает использование Type.self в контексте инициализатора, т.е. , Type.self(). Это, однако, избыточное использование суффикса .self.

+0

Таким образом, это похоже на добавление себя при использовании параметров, принадлежащих классу - например. self.frame. Не так, но ничего не делает? –

+2

@BenOng В этом контексте иногда нам необходимо использовать суффикс 'self', например. чтобы помочь компилятору различать параметры, принадлежащие классу, и одноименные локальные параметры (обычно используемые, например, initializer, 'self.foo = foo'). Но да, использование 'self' в описываемом вами контексте является избыточным, и я не вижу причин для этого; аналогичный случай будет использовать, например, 'Realm.init()', а не 'Realm()' ('.init' имеет свои применения, но в некоторых случаях также является избыточным). – dfri

+0

Большое вам спасибо за быстрый ответ! Я соглашусь с этим, пока не найду другую причину использования .self –