Tre*_*man 8 dictionary arguments return swift
假设我map像这样调用,使用匿名闭包参数$0:
array.map {\n return $0.description\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我如何明确定义该映射返回 a string?这不起作用:\xe2\x80\x99:
array.map { -> String\n return $0.description\n}\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n闭包参数列表的上下文类型需要 1 个参数,不能隐式忽略该参数
\n
这是否意味着如果我想指定返回值,我必须命名我的参数?
\n\n[编辑:我知道我在这里不需要显式返回类型;还是想知道如何指定一个]
\n您可以使用它as来识别匿名机箱的类型。在这种情况下,您还需要指定输入的类型:
let result = array.map({ $0.description } as (CustomStringConvertible) -> String)
Run Code Online (Sandbox Code Playgroud)
注意: 您可以使用其中的任何类型array作为输入类型。在这里我只使用了CustomStringConvertible协议,因为这是访问该属性所需要的.description。
或者正如您所提到的,如果为输入参数指定名称,则可以指定输出类型:
let result = array.map { value -> String in value.description }
Run Code Online (Sandbox Code Playgroud)
另一种看待它的方法是注意map返回闭包返回Array的任何类型map。你可以指定映射的结果是[String],然后 Swift 会推断map闭包返回String:
let result = array.map({ $0.description }) as [String]
Run Code Online (Sandbox Code Playgroud)
或者
let result: [String] = array.map { $0.description }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4451 次 |
| 最近记录: |