In a class, I defined a private constant, I try to use the constant as a default value of parameter of a function:
class Foo { // instance variable private let DefaultValue = 10 // Compiler error: Cannot use instance member 'DefaultValue' as a default parameter public func doTask(amount: Int = DefaultValue) { ... } } But I get compiler error: Cannot use instance member 'DefaultValue' as a default parameter.
Then, I also tried declare DefaultValue as private static:
class Foo { // static variable private static let DefaultValue = 10 // Compiler error: Static let 'DefaultValue' is private and cannot be referenced from a default argument value public func doTask(amount: Int = DefaultValue) { ... } } But I get new compiler error: Static let 'DefaultValue' is private and cannot be referenced from a default argument value
I need to keep DefaultValue private to this class & I would like to assign default value to the parameter of function with a private variable, whether this is achievable in Swift 4?
DefaultValueneed to remain private? In Swift 5, default argument expressions are now shown in a module's generated interface, so default arguments must only refer topublicthings (compare stackoverflow.com/q/46524232/2976878)