提问人:Gargo 提问时间:11/8/2023 最后编辑:Gargo 更新时间:11/9/2023 访问量:77
使用“Swift 宏”(从 Swift 5.9 开始)来声明类、结构、协议等名称?
Use "Swift Macro" (from Swift 5.9) to declare class, struct, protocol and etc. names?
问:
在 Objective-C 中,我们可以根据其含义编写类似内容并用“A”替换所有“B”项。#define A B
现在在 Swift 5.9 中,Apple 引入了 Swift Macro(它添加了处理宏的高级工具),但关于它的信息太少了,我找到了如何仅将这项技术用于纯字符串:
@freestanding(expression)
public macro stringify() -> String = #externalMacro(module: "SomeMacroMacros", type: "StringifyMacro")
public struct StringifyMacro: ExpressionMacro {
public static func expansion(
of node: some FreestandingMacroExpansionSyntax,
in context: some MacroExpansionContext
) -> ExprSyntax {
"\"Test\""
}
print(#stringify) //outputs "Test"
但是,如果我想替换类、结构、协议名称声明怎么办?一般来说,Swift Macro 可以吗?
例
以下代码不起作用。我只是用它来解释我需要用 Swift 宏实现什么:
#define SomeClass SomeAnotherClass
class SomeClass {
...
}
答: 暂无答案
评论
typealias
class Someclass
class SomeAnotherClass