6

在 Xcode 10 代码完成中,占位符标记下的文本前面有一个额外的#T#(要查看是这样,请将插入的代码模板复制并粘贴到不同的文本编辑器中):

let alert = UIAlertController(
    title: <#T##String?#>, message: <#T##String?#>, 
    preferredStyle: <#T##UIAlertController.Style#>)

那是什么?“T”是指类型吗?它对我使用占位符有什么影响?

4

1 回答 1

4

该语法<#T##_A_##_B_#>用于指定占位符的默认代码段。占位符将显示为_A_,但当用户按下回车键时,占位符将替换为_B_

占位符:

在此处输入图像描述

按回车后:

在此处输入图像描述

在向观众展示某些内容时,这是一个有用的功能,因为与片段相反,我不需要记住每个片段的名称,我只需选择一个占位符并按 Enter 键即可获取正确的代码片段。

编辑

回答您的问题,确实似乎 T 指的是类型。如果您尝试用表达式替换占位符,例如,则不会像您期望<#T##Example1##let i = 3#>的那样替换占位符。let i = 3而是替换为<<error type>>.

此外,这个占位符<#T##transform: (Error) throws -> U?##(Error) throws -> U?#>被替换为:

{ (<#Error#>) -> U? in
    <#code#>
}

我的猜测是,当您预先T告诉 Xcode 您将提供一个类型时,Xcode 会为该类型找到一个适当的默认值。

于 2020-01-22T09:38:29.647 回答