Swift2 Swift 2.2:#如果Swift(>;=x.y)版本构建配置:是否可用于检查子版本?(例如,区分Swift 2.1和2.1.1)
有了Swift 2.2,我们现在可以使用Swift2 Swift 2.2:#如果Swift(>;=x.y)版本构建配置:是否可用于检查子版本?(例如,区分Swift 2.1和2.1.1),swift2,Swift2,有了Swift 2.2,我们现在可以使用#if Swift(>=x.y)版本构建配置 出于好奇,我尝试将其与更低一步的subversion级别比较一起使用(比如说=2.1.1,而不通过XCode 7.1 beta 2中的Swift2.1),但我自己的尝试并没有真正起作用: =x.y.z产生错误, 应为数字文字的命名成员 =x.ywithy=11自然编译并传递,但作为一个版本,2.11 我在网上找不到关于这个的更多细节 问题:这个新版本的构建配置是否仅限于一个.ysubversion,或者是
#if Swift(>=x.y)
版本构建配置
出于好奇,我尝试将其与更低一步的subversion级别比较一起使用(比如说=2.1.1
,而不通过XCode 7.1 beta 2中的Swift2.1
),但我自己的尝试并没有真正起作用:
产生错误, 应为数字文字的命名成员=x.y.z
with=x.y
自然编译并传递,但作为一个版本,y=11
李>2.11
问题:这个新版本的构建配置是否仅限于一个
.y
subversion,或者是否有一些技巧可以绕过这个问题?回答:新版本的构建配置仅限于两个版本组件
从 详细设计 目前,我们最多只需要两个版本组件,因为它将 语法更改不太可能使其出现在+0.0.1版本中 更多详细信息可在中找到,尤其是在Chris Lattner和Douglas Gregor之间的交流中: 2015年12月18日下午3:34,道格拉斯·格雷戈通过swift evolution写道: 2015年12月18日下午12:29,Chris Lattner通过swift evolution写道: 如果我们想支持subversion,那么使用字符串的参数是,例如“#if swift(2.2.1)”。这要求参数为字符串,,因为2.2.1不是有效的浮点文本-lexer将不受欢迎 这是LGTM的一个特点,我也希望我们删除引号。 两级版本号应足够
回答:新版本构建配置仅限于两个版本组件
从 详细设计 目前,我们最多只需要两个版本组件,因为它将 语法更改不太可能使其出现在+0.0.1版本中 更多详细信息可在中找到,尤其是在Chris Lattner和Douglas Gregor之间的交流中: 2015年12月18日下午3:34,道格拉斯·格雷戈通过swift evolution写道: 2015年12月18日下午12:29,Chris Lattner通过swift evolution写道: 如果我们想支持subversion,那么使用字符串的参数是,例如“#if swift(2.2.1)”。这要求参数为字符串,,因为2.2.1不是有效的浮点文本-lexer将不受欢迎 这是LGTM的一个特点,我也希望我们删除引号。 两级版本号应足够
从你的链接。。。。“目前,我们最多只希望有两个版本组件,因为在+0.0.1修订版中,语法更改不太可能使它成为一个版本。”只有两个版本组件是最重要的answer@user3441734天啊,我完全错过了,谢谢!(请随意添加回答)@user3441734我现在也发现,Douglas Gregor在其中写道“两级版本号应该足够了。”,这是在
#if swift(>=…)
签名(而不是字符串“2.1.1”
)中使用浮点文本的一个可接受的副作用。因此,两个版本组件的限制似乎不是一个积极的选择(一种效果),而是一种方便,w.r.t.比较浮点文本而不是字符串文本。从您的链接。。。。“目前,我们最多只希望有两个版本组件,因为在+0.0.1修订版中,语法更改不太可能使它成为一个版本。”只有两个版本组件是最重要的answer@user3441734天啊,我完全错过了,谢谢!(请随意添加回答)@user3441734我现在也发现,Douglas Gregor在其中写道“两级版本号应该足够了。”,这是在#if swift(>=…)
签名(而不是字符串“2.1.1”
)中使用浮点文本的一个可接受的副作用。因此,两个版本组件的限制似乎不是一个积极的选择(一种效果),而是一种方便,w.r.t.比较浮点文本而不是字符串文本。
#if swift(>=2.2)
print("Active!")
#else
this! code! will! not! parse! or! produce! diagnostics!
#endif