Elixir语言中 Version 相关用法介绍如下。
根据需求解析和匹配版本的函数。
版本是特定格式的字符串或通过   解析后生成的 Version.parse/1   。Version 
尽管 Elixir 项目不需要遵循 SemVer,但它们必须遵循 SemVer 2.0 schema 中列出的格式。
版本
简而言之,一个版本由三个数字表示:
MAJOR.MINOR.PATCH
通过可选地在补丁版本之后附加一个连字符和一系列 period-separated 标识符来支持预发布。标识符仅由 ASCII 字母数字字符和连字符 ([0-9A-Za-z-]) 组成:
"1.0.0-alpha.3"
可以通过在补丁或预发布版本之后附加一个加号和一系列 dot-separated 标识符来添加构建信息。标识符仅由 ASCII 字母数字字符和连字符 ([0-9A-Za-z-]) 组成:
"1.0.0-alpha.3+20130417140000.amd64"
结构
版本由   结构表示,字段根据 SemVer 2.0 命名:Version :major、:minor、:patch、:pre和:build。您可以读取这些字段,但不应直接通过结构语法创建新的 。而是使用此模块中的函数。Version 
要求
需求允许您指定您愿意使用的给定依赖项的哪些版本。要求支持常见的比较运算符,例如 > 、 >= 、 < 、 <= 和 == ,它们可以按预期工作,另外还支持特殊运算符 ~> 在下面进一步详细说明。
# Only version 2.0.0
"== 2.0.0"
# Anything later than 2.0.0
"> 2.0.0"
对于复杂条件,要求还支持 and 和 or:
# 2.0.0 and later until 2.1.0
">= 2.0.0 and < 2.1.0"
由于上面的例子是这样一个常见的需求,它可以表示为:
"~> 2.0.0"
~> 将永远不会包含其上限的预发布版本,无论是否使用了 :allow_pre 选项,或者操作数是否为预发布版本。它也可用于仅在主要版本部分设置上限。请参阅下表了解~> 要求及其相应的翻译。
~> | 翻译 | 
|---|---|
~> 2.0.0 | >= 2.0.0 and < 2.1.0 | 
~> 2.1.2 | >= 2.1.2 and < 2.2.0 | 
~> 2.1.3-dev | >= 2.1.3-dev and < 2.2.0 | 
~> 2.0 | >= 2.0.0 and < 3.0.0 | 
~> 2.1 | >= 2.1.0 and < 3.0.0 | 
~> 之后的要求操作数允许省略补丁版本,允许我们表达 ~> 2.1 或 ~> 2.1-dev ,这是使用常见比较运算符时不允许的。
当 :allow_pre 选项在   中设置 Version.match?/3 false 时,除非操作数是预发布版本,否则要求将不匹配预发布版本。默认情况下始终允许预发布,但请注意在十六进制中 :allow_pre 设置为 false 。有关示例,请参见下表。
| 要求 | 版本 | :allow_pre | 火柴 | 
|---|---|---|---|
~> 2.0 | 2.1.0 | true 或 false | true | 
~> 2.0 | 3.0.0 | true 或 false | false | 
~> 2.0.0 | 2.0.5 | true 或 false | true | 
~> 2.0.0 | 2.1.0 | true 或 false | false | 
~> 2.1.2 | 2.1.6-dev | true | true | 
~> 2.1.2 | 2.1.6-dev | false | false | 
~> 2.1-dev | 2.2.0-dev | true 或 false | true | 
~> 2.1.2-dev | 2.1.6-dev | true 或 false | true | 
>= 2.1.0 | 2.2.0-dev | true | true | 
>= 2.1.0 | 2.2.0-dev | false | false | 
>= 2.1.0-dev | 2.2.6-dev | true 或 false | true | 
相关用法
- Elixir Version.parse_requirement用法及代码示例
 - Elixir Version.parse用法及代码示例
 - Elixir Version.match?用法及代码示例
 - Elixir Version.parse!用法及代码示例
 - Elixir Version.compare用法及代码示例
 - Elixir Version.parse_requirement!用法及代码示例
 - Elixir StringIO.flush用法及代码示例
 - Elixir Calendar.ISO.date_to_string用法及代码示例
 - Elixir Enum.unzip用法及代码示例
 - Elixir Date.add用法及代码示例
 - Elixir Keyword.get用法及代码示例
 - Elixir Stream用法及代码示例
 - Elixir Registry.count_match用法及代码示例
 - Elixir List.keyfind!用法及代码示例
 - Elixir URI.decode用法及代码示例
 - Elixir Integer.pow用法及代码示例
 - Elixir NaiveDateTime用法及代码示例
 - Elixir Enum.min_max用法及代码示例
 - Elixir Path.basename用法及代码示例
 - Elixir Code.prepend_path用法及代码示例
 - Elixir Calendar.ISO.time_to_string用法及代码示例
 - Elixir Bitwise.~~~expr用法及代码示例
 - Elixir Kernel.SpecialForms.case用法及代码示例
 - Elixir String.contains?用法及代码示例
 - Elixir Map.keys用法及代码示例
 
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Version。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
