在Julia中实现自定义基元类型

在Julia中实现自定义基元类型,julia,Julia,朱莉娅的文件说: 基元类型是一种具体类型,其数据由普通的旧类型组成 位。基本类型的经典示例是整数和 浮点值。与大多数语言不同,Julia允许您声明 您自己的基本类型,而不是只提供一组固定的 内置的。事实上,标准原语类型都已定义 在语言本身中: 不过,我在文档、源代码或其他任何地方都找不到如何实现这一点的示例。我要找的是一个如何声明基元类型的示例,以及如何随后在该类型上实现通过操纵这些位来工作的函数或方法 有人能给我举个例子吗?谢谢 编辑:很清楚如何声明基元类型,因为在文档中上述引号的正下方有一

朱莉娅的文件说:

基元类型是一种具体类型,其数据由普通的旧类型组成 位。基本类型的经典示例是整数和 浮点值。与大多数语言不同,Julia允许您声明 您自己的基本类型,而不是只提供一组固定的 内置的。事实上,标准原语类型都已定义 在语言本身中:

不过,我在文档、源代码或其他任何地方都找不到如何实现这一点的示例。我要找的是一个如何声明基元类型的示例,以及如何随后在该类型上实现通过操纵这些位来工作的函数或方法

有人能给我举个例子吗?谢谢


编辑:很清楚如何声明基元类型,因为在文档中上述引号的正下方有一些示例。我希望得到关于如何操纵它们的信息。例如,假设我想(毫无意义地)实现我自己的基元类型
MyInt8
。我可以用
基元类型MyInt8
声明它#声明新类型。

原语类型MyInt8有一些声明示例。在v0.6之前,它们被称为(并声明为)。但是是的,没有比如何申报更多的解释了…@phg是的-谢谢,如何申报是很清楚的。我在寻找更多关于如何随后操纵它们的信息。我将对问题进行编辑以使其更清楚。如果您要求对新的
Myint8
类型进行运算符重载,您可以看看这个问题(昨天提出的):@Antonello该问题中提到的类型不是基元类型。它通过操纵类型
Foo
的字段来实现
+
——我有兴趣做一件类似的事情,但是使用一个基元类型,并操纵该类型的位。也许“在Julia中直接操纵自定义基元类型的位”会是一个更好的标题:)
# Declare the new type.
primitive type MyInt8 <: Signed 8 end

# A constructor to create values of the type MyInt8.
MyInt8(x :: Int8) = reinterpret(MyInt8, x)

# A constructor to convert back.
Int8(x :: MyInt8) = reinterpret(Int8, x)

# This allows the REPL to show values of type MyInt8.
Base.show(io :: IO, x :: MyInt8) = print(io, Int8(x))

# Declare an operator for the new type.
import Base: +

+ (a :: MyInt8, b :: MyInt8) = MyInt8(Int8(a) + Int8(b))