swift Xcode 10代码完成占位符-什么是“T”?

z18hc3ub  于 2023-11-16  发布在  Swift
关注(0)|答案(2)|浏览(117)

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

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

字符串
那是什么?“T”是Type的意思吗?它对我使用占位符有什么影响?

n3schb8v

n3schb8v1#

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


的数据
按回车键后:



当向观众展示一些东西时,这是一个有用的功能,因为与代码片段相反,我不需要记住每个代码片段的名称,我只需要选择一个占位符并按回车键就可以得到正确的代码片段。

编辑

回答你的问题,实际上,它似乎是指类型。如果你试图用一个表达式来替换占位符,比如<#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会为这个类型找到一个合适的默认值。

yacmzcpb

yacmzcpb2#

T支持类型化占位符标记,主要在编辑器可以显示一些输入视图时工作(如在操场上)
例如,<#T##number of llamas##Int#>表示:

  • 此占位符为T类型
  • 输入的名称为number of llamas
  • 输入类型为Int埃格

因此,选择占位符将打开数字输入弹出框。
由于它是关于建议输入,你不能看到真正的好处,在像Xcode的环境中,你是在你的mac上使用物理键盘.但它变得非常方便,当你使用例如iPad.

相关问题