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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
