2016-07-13 4 views
1

Я уверен, преобразование кода, который не мой к быстрым 3,0 и есть некоторые строки, я не понимаю, что в настоящее время помечены компилятор:Что означает ~> (тильда больше) в этом коде Swift?

public func setupAppearance() 
{ 
    if let delegate = delegate 
    { 
     firstWeekday~>delegate.firstWeekday?() 
     dayOfWeekTextColor~>delegate.dayOfWeekTextColor?() 
     dayOfWeekTextUppercase~>delegate.dayOfWeekTextUppercase?() 
     dayOfWeekFont~>delegate.dayOfWeekFont?() 
     weekdaySymbolType~>delegate.weekdaySymbolType?() 
    } 
} 

Примечания Это не -> (тир, больше) но ~> (тильда, больше)

Я нашел этот вопрос: What is the ~> (tilde greater than) operator used for in Swift? но не нашел это очень полезным.

Может ли кто-нибудь указать мне на документы о том, как это прочитать? К сожалению, google, stackoverflow и github не могут искать ~>.

Благодаря

Грег

+3

Кто-то создал пользовательский оператор (или лучше поставил: они угнали существующего оператора, чтобы означать что-то другое, что хуже). Щелкните по нему правой кнопкой мыши и посмотрите, куда он вас доставит. (Одна из причин, почему я препятствую использованию пользовательских операторов ...) –

+0

@RobNapier '~>' не является «существующим оператором», так что вы имеете в виду? –

+1

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

ответ

1

Я считаю, что первоначальный разработчик использовал пользовательский оператор Swift для Thread Marshalling по iJoshSmith.

+0

Итак, если я правильно понимаю, этот код использует недокументированную функцию Swift для копирования всей структуры данных из одного объекта в другой, и это делается в основном потоке? –

+0

Что делает пользовательский оператор Swift, он выполняет левое закрытие на фоновом потоке, и когда он завершает его, он выполняет правое закрытие основного потока. Вы также можете проверить исходный код, если он действительно использует эту библиотеку, или оригинальный автор вашего кода создал собственную реализацию этого оператора. –

+0

Это правильный ответ, поскольку они создали свой собственный оператор: infix operator ~> {} public func ~> (lhs: inout T ?, rhs: T?) -> T? { если lhs! = Nil && rhs! = Nil { lhs = rhs } return lhs } –

Смежные вопросы