- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个整数 n
只会在 [0, 10]
中取值.我应该将其声明为 n::Integer
笼统地说,如 n::Int8
或 n::UInt8
要节俭或n::Int64
对于 64 位系统?
请说明新手的原因,例如风格, 性能.
引用:https://docs.julialang.org/en/release-0.5/manual/integers-and-floating-point-numbers/
更新引用 (2021): https://docs.julialang.org/en/v1/manual/types/#man-abstract-types
最佳答案
区分两种不同的情况很重要。
存储:如果你有一个存储 n
的类型作为其字段之一,或作为数组中的值,那么您绝对应该考虑使用 Int8
或 UInt8
.即使单个值节省的空间可以忽略不计,如果您的类型的许多实例被创建并存储在一个集合中,那么空间节省会迅速变得显着。假设您有一个 Foo
输入字段 n
,那么你可以这样做:
struct Foo
n::UInt8
end
n
赋值时领域
Foo
对象,它会自动转换为
UInt8
如果无法忠实地转换值,则会引发错误:
julia> Foo(123) # Ints are automatically converted to UInt8
Foo(0x7b)
julia> typeof(ans.n)
UInt8
julia> Foo(500) # if too large, an error is raised
ERROR: InexactError()
Stacktrace:
[1] Foo(::Int64) at ./REPL[1]:2
julia> Foo(-1) # ditto if too small
ERROR: InexactError()
Stacktrace:
[1] Foo(::Int64) at ./REPL[1]:2
julia> Foo(2π/π)
Foo(0x02)
n
的函数的方法作为一个论点,那么在
n
上放一个松散的类型注释是没有坏处的。论证在语义上是有意义的。在您描述的情况下,似乎任何类型的整数值都是合理的,因此使用
n::Integer
可能是合适的。例如,如果想为
Foo
实现一个检查构造函数对象,你可以这样做:
struct Foo
n::UInt8
function Foo(n::Integer)
0 <= n <= 10 || throw(ArgumentError("n not in [0, 10]: $n"))
return new(n)
end
end
julia> Foo(123)
ERROR: ArgumentError: n not in [0, 10]: 123
Stacktrace:
[1] Foo(::Int64) at ./REPL[26]:2
julia> Foo(3)
Foo(0x03)
Foo
构造适用于任何类型的整数,检查它是否在正确的范围内,然后转换为
UInt8
.这比
Foo
的内置构造函数的限制要稍微多一些。 ,它会很乐意接受任何类型的
n
参数并尝试将其转换为
UInt8
– 即使参数不是整数类型。如果这种行为是可取的,您可以将此处的类型签名进一步放宽到
n::Real
,
n::Number
(甚至
n::Any
,尽管这似乎有些过分)。
关于types - Julia:抽象和具体类型整数与 Int8 与 Int64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44435745/
在与大语言模型对话时,应该提供尽可能清晰和具体的指令来表达希望模型执行的操作,这将有助于模型给出接近你所期待的输出,并降低得到无关或不正确回复的可能性。但需要注意的是,编写清晰的指令不意味着编写简短的
我是 Robert,我在使用 JavaScript 时遇到了一些问题。 我得到了一个 (这是隐藏的)。我唯一想问你的是:我想检查日期是否在 中已通过。如果通过了我想改变CSS中容器的背景颜色。不幸的
所以我的问题是我想要求输入使用扫描仪的信息,但它根本不打印出来。当它显示跳过的扫描仪的值时,Scanner CheeseType = new Scanner(System.in);,我得到 null。
Fe_Order_Items fe_order_items_id fe_order_specification_id fe_users_id fe_menu_items_id fe_order_ite
人们普遍提到 - “Celery 是一个基于分布式消息传递的异步任务队列/作业队列”。虽然我知道如何使用 Celery 工作人员等。但内心深处我不明白分布式消息传递的真正重要性和意义以及任务队列在其中
我试图理解下面的代码,但有一些我以前从未见过的东西,那就是:“\&\&” 这是代码: int main() { fork() \&\& (fork() || fork()); exit(EXIT_SU
您好,我是论坛新手。 我有很多使用 python 的经验,但没有使用 tkinter 的经验。 这是我的代码: from tkinter import * def Done(): celEn
在 C# 中,假设我们有一个通用类和一个具体类 [Serializable] public class GenericUser { ... [Serializable] public class Co
我尝试使用的库有一个通用抽象类,其中有两个实现该基础的子类。我想编写一个类,它将根据构造函数参数的参数类型自动创建其中一个子级的实例。 基类没有默认构造函数 基类的构造函数也需要其他通用类的实例 代码
我是 Angular 的新手,我一直在尝试了解它的工作原理。我正在制作一个简单的应用程序,其中有人可以通过简单的 html 界面添加用户并使用 SQLite 将其存储在数据库中,然后他们可以编辑或删除
我想创建一个用于存储数据的对象,限制读/写访问。 例如: OBJ obj1; OBJ obj2; // DataOBJ has 2 methods : read() and write() DataO
注入(inject)/隔离密封在 dll 中且不实现接口(interface)的类的首选方法是什么? 我们使用 Ninject。 假设我们有一个类“Server”,我们想要注入(inject)/隔离“
在花费了至少 10 个小时的时间浏览在线资源、视频和教程之后,我有两个关于将我的 Android 应用程序与 mySQL 数据库连接的问题。 保存文件 1) 所有教程都将 php 文件保存在 C/WA
许多有经验的开发人员建议不要使用 Django multi-table inheritance因为它的性能不佳: Django gotcha: concrete inheritance通过 Jacob
我知道我冒着挨揍的风险,但我觉得我在这件事上要绕圈子。为了让模型可用于多个项目,我们已将模型移出到一个单独的项目(一个 DLL)中,作为一系列要实现的接口(interface)。我们的界面上有这一行:
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我遇到了一个特定 mac 的问题,它没有显示我正确构建的某个网站。我测试过的所有其他 mac 和 pc 都能正确显示网站,但是在所有浏览器中这个特定的 mac 显示不正确就像提到的那样,这在其他每台计
给定这段代码 public override void Serialize(BaseContentObject obj) { string file = ObjectDataStoreFold
我已经搜索了网络和我的服务器,但我无法找到我网站的 php.ini。我的网站出现以下错误。 Class 'finfo' not found Details G:\inetpub\wwwroot\lan
SQL 爱好者: 我正在尝试通过玩以下用例来挖掘我一些生疏的 sql 技能: 假设我们有一家有线电视公司,并且有跟踪的数据库表: 电视节目, 观看我们节目的客户,以及 观看事件(特定客户观看特定节目的
我是一名优秀的程序员,十分优秀!