在Xcode 10代码完成中,占位符标记下面的文本前面有一个额外的#T#(要查看是否如此,请将插入的代码模板复制并粘贴到不同的文本编辑器中):
#T#
let alert = UIAlertController( title: <#T##String?#>, message: <#T##String?#>, preferredStyle: <#T##UIAlertController.Style#>)
字符串那是什么?“T”是Type的意思吗?它对我使用占位符有什么影响?
n3schb8v1#
语法<#T##_A_##_B_#>用于指定占位符的默认代码段。占位符将显示为_A_,但当用户按回车键时,占位符将被替换为_B_。占位符:
<#T##_A_##_B_#>
_A_
_B_
的数据按回车键后:
的当向观众展示一些东西时,这是一个有用的功能,因为与代码片段相反,我不需要记住每个代码片段的名称,我只需要选择一个占位符并按回车键就可以得到正确的代码片段。
编辑:
回答你的问题,实际上,它似乎是指类型。如果你试图用一个表达式来替换占位符,比如<#T##Example1##let i = 3#>,占位符并没有像你期望的那样被替换为let i = 3。而是被替换为<<error type>>。此外,此占位符<#T##transform: (Error) throws -> U?##(Error) throws -> U?#>替换为:
<#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会为这个类型找到一个合适的默认值。
T
yacmzcpb2#
T支持类型化占位符标记,主要在编辑器可以显示一些输入视图时工作(如在操场上)例如,<#T##number of llamas##Int#>表示:
<#T##number of llamas##Int#>
number of llamas
Int
因此,选择占位符将打开数字输入弹出框。由于它是关于建议输入,你不能看到真正的好处,在像Xcode的环境中,你是在你的mac上使用物理键盘.但它变得非常方便,当你使用例如iPad.
2条答案
按热度按时间n3schb8v1#
语法
<#T##_A_##_B_#>
用于指定占位符的默认代码段。占位符将显示为_A_
,但当用户按回车键时,占位符将被替换为_B_
。占位符:
的数据
按回车键后:
的
当向观众展示一些东西时,这是一个有用的功能,因为与代码片段相反,我不需要记住每个代码片段的名称,我只需要选择一个占位符并按回车键就可以得到正确的代码片段。
编辑:
回答你的问题,实际上,它似乎是指类型。如果你试图用一个表达式来替换占位符,比如
<#T##Example1##let i = 3#>
,占位符并没有像你期望的那样被替换为let i = 3
。而是被替换为<<error type>>
。此外,此占位符
<#T##transform: (Error) throws -> U?##(Error) throws -> U?#>
替换为:字符串
我的猜测是,当你在
T
前面加上前缀时,你是在告诉Xcode你将提供一个类型,然后Xcode会为这个类型找到一个合适的默认值。yacmzcpb2#
T
支持类型化占位符标记,主要在编辑器可以显示一些输入视图时工作(如在操场上)例如,
<#T##number of llamas##Int#>
表示:T
类型number of llamas
Int
埃格因此,选择占位符将打开数字输入弹出框。
由于它是关于建议输入,你不能看到真正的好处,在像Xcode的环境中,你是在你的mac上使用物理键盘.但它变得非常方便,当你使用例如iPad.