如何在Crystal Lang中访问模块定义的VERSION版本常量?
如何访问Crystal Lang模块中的VERSION常量
嘿,这个问题其实挺简单的!按照Crystal社区的惯例,VERSION常量是定义在对应模块内部的,所以访问它的方式非常直接,分两种常见场景来看:
1. 在你自己的项目内部访问
假设你项目里有一个模块MyAwesomeLib,版本常量定义在src/my_awesome_lib/version.cr里,代码长这样:
module MyAwesomeLib VERSION = "1.2.3" # 遵循SemVer规范的版本号 end
只要你在项目的主文件(比如src/my_awesome_lib.cr)里已经require了这个version文件:
require "./my_awesome_lib/version" # 其他模块代码...
那在项目的任何其他文件里,只要你已经require了主模块,就可以直接通过模块名+双冒号来访问这个常量:
puts "当前版本: #{MyAwesomeLib::VERSION}" # 输出:当前版本: 1.2.3
2. 访问依赖库的VERSION常量
如果你是通过shard.yml引入了第三方库,比如某个叫crystal-fancy的shard,它遵循同样的惯例把VERSION放在自己的模块里。那只要你在代码里require了这个库:
require "crystal-fancy"
就可以直接用库的模块名来访问它的版本:
puts "依赖库版本: #{CrystalFancy::VERSION}"
需要注意的是,有些库可能会把VERSION放在顶层命名空间,但这不是主流惯例——按照社区通用做法,版本常量一定是依附在对应模块内部的,所以找对模块名就没问题啦!
内容的提问来源于stack exchange,提问作者dkimot
相关产品推荐
相关产品推荐

