mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Introduce callables: values of types that declare `func callAsFunction`
methods can be called like functions. The call syntax is shorthand for
applying `func callAsFunction` methods.
```swift
struct Adder {
var base: Int
func callAsFunction(_ x: Int) -> Int {
return x + base
}
}
var adder = Adder(base: 3)
adder(10) // desugars to `adder.callAsFunction(10)`
```
`func callAsFunction` argument labels are required at call sites.
Multiple `func callAsFunction` methods on a single type are supported.
`mutating func callAsFunction` is supported.
SR-11378 tracks improving `callAsFunction` diagnostics.
12 lines
199 B
Swift
12 lines
199 B
Swift
public protocol Layer {
|
|
func callAsFunction(_ input: Float) -> Float
|
|
}
|
|
|
|
public struct Dense {
|
|
public init() {}
|
|
|
|
public func callAsFunction(_ input: Float) -> Float {
|
|
return input * 2
|
|
}
|
|
}
|