¿Los métodos que no son de instancia deberían ser funciones libres o funciones estáticas?
Porque actualmente tenemos:
extension SignalType {
/// Merges the given signals into a single `Signal` that will emit all values
/// from each of them, and complete when all of them have completed.
@warn_unused_result(message="Did you forget to call `observe` on the signal?")
public static func merge<S : SequenceType where S.Generator.Element == Signal<Value, Error>>(signals: S) -> ReactiveCocoa.Signal<Self.Value, Self.Error>
}
Pero también tenemos:
/// Combines the values of all the given signals, in the manner described by
/// `combineLatestWith`.
@warn_unused_result(message="Did you forget to call `observe` on the signal?")
public func combineLatest<A, B, Error>(a: Signal<A, Error>, _ b: Signal<B, Error>) -> Signal.Signal<(A, B), Error>
Deberíamos estandarizar en uno u otro para RAC 5.0.
Votaría funciones gratuitas, pero tengo curiosidad si alguien piensa que deberíamos usar funciones estáticas. @ ReactiveCocoa / reactivecocoa
Las funciones estáticas son más fáciles de completar automáticamente, por lo que votaría por eso.
Gracias por mencionar este tema :) definitivamente estoy de acuerdo en que deberíamos unificarnos para mantener la coherencia.
Una ventaja de las funciones gratuitas es que no es necesario pensar en si algo es un Signal
o un SignalProducer
.
Estoy de acuerdo con @JaviSoto. Para las personas que conocen bien RAC, las funciones gratuitas no son un problema, yo diría que la capacidad de descubrimiento de principiantes a nivel medio puede ser un problema.
Las pautas de la API de Swift son bastante claras al respecto .
Prefiere métodos y propiedades a funciones libres. Las funciones gratuitas se utilizan solo en casos especiales:
Cuando no hay un yo obvio:
min(x, y, z)
Cuando la función es un genérico sin restricciones:
print(x)
Cuando la sintaxis de la función es parte de la notación de dominio establecida:
sin(x)
Estas funciones son básicamente constructores sofisticados, por lo que usar el metatipo como self
parece bastante defendible.
¡Esto se hizo en el # 3001! 🎉
Comentario más útil
Las pautas de la API de Swift son bastante claras al respecto .
Estas funciones son básicamente constructores sofisticados, por lo que usar el metatipo como
self
parece bastante defendible.