Julia文档说:
基本类型是具体类型,其数据由普通旧位组成.原始类型的经典示例是整数和浮点值.与大多数语言不同,Julia允许您声明自己的原始类型,而不是仅提供一组固定的内置类型.实际上,标准基元类型都是在语言本身中定义的:
但是,我无法在文档或源代码中或其他任何地方找到如何执行此操作的示例.我正在寻找的是一个如何声明基本类型的示例,以及如何随后通过操作这些位来实现该类型的函数或方法.
有人能指出我的榜样吗?谢谢.
编辑:很清楚如何声明基本类型,因为在文档的上面引用的下面有一些例子.我希望获得有关如何随后操纵它们的信息.例如,假设我想(毫无意义地)实现我自己的原始类型MyInt8.我可以用声明primitive type MyInt8 <: Signed 8 end.但是,我如何随后实现一个myplus操作位内的函数Myint8?
PS如果它有帮助,我问的原因不是因为我需要在朱莉娅做任何具体的事情; 我正在设计自己的语言以获得乐趣,并且正在研究其他语言如何实现各种各样的东西.
Sha*_*ane 11
# 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))
Run Code Online (Sandbox Code Playgroud)
这里的关键功能是reinterpret.它允许将Int8的位表示视为新类型.
要在MyInt8构造函数中存储具有自定义位布局的值,您可以在将它们"重新解释"为MyInt8之前执行Int8上的任何标准位操作函数.