# @refunit


定义一个单位,包含 SI 前缀

函数库: TySymbolicMath

# 语法

@refunit(symb, name, abbr, dimension, tf)

# 说明

@refunit(symb, name, abbr, dimension, tf) 在每个单位和由该宏定义的参考单位之间给出转换因子。此宏扩展了 Unitful.abbr,以便可以以缩写格式显示参考单位。如果 tf == true,则此宏使用标准 SI 前缀为单位的每十次幂生成符号。必须给出维度(Unitful.Dimensions 对象)来指定参考单位的维度。 示例

# 示例

定义一个单位

定义一个新的单位 MyMeter,单位符号为 mym,其本质与米(m)相同,单位维度为长度。同时,令 tf = true,使 julia 自动定义国际单位的十的幂的 SI 前缀。(如 μ 表示

using TySymbolicMath
@refunit mym "mym" MyMeter u"𝐋" true
20μmym/1u"s"
20.0 μmym s^-1

# 输入参数

symb - 单位符号
符号表达式

单位符号,指定为符号表达式。

name - 符号名称
符号表达式

符号名称,指定为符号表达式。

abbr - 单位名称缩写
符号表达式

单位名称缩写,指定为符号表达式。

dimension - 维度
FreeUnits

维度,即新定义单位所属的单位维度,指定为 FreeUnits 类型。

tf - 创建十的幂的 SI 前缀
布尔型

创建十的幂的 SI 前缀,指定为布尔型。

  • tf = true 时,julia 自动为新定义单位创建十的幂的 SI 前缀。

  • tf = false 时,仅创建新定义单位。

# 提示

原则上,您可以使用这个宏定义新的单位,但这样做可能没有多大意义。如果你使用 @dimension 定义一个新的(可能是非物理的)维度,那么这个宏将是必要的。对于现有维度,如果使用此宏,几乎肯定会造成混淆。一个潜在的用例是在不参考 SI 的情况下定义单位系统。但是,没有明确的障碍来阻止尝试在 SI 和这个假设的单位系统之间进行转换,这可能会产生意想不到的结果。

您可以尝试使用 @unit 通过在给定维度的每个单位之间定义转换因子来定义新单位。

# 另请参阅

basefactors | Quantity | unit | @unit | @affineunit