如何解决为什么A = Tuple {4,5}是有效的Julia语法?那是什么意思呢?
我正在阅读Julia文档,当在Julia REPL中尝试某些操作时,我不小心键入了/
而不是A = Tuple{4,5}
。令我惊讶的是,这并没有引发错误。
为什么A = (4,5)
是A
,即使4和5是DataType
/ Int64
的实例?
解决方法
由于Tuple{Int,String}
是(123,"hello")
的类型,因此类似地,Tuple{4,5}
就是两个元素元组的类型,其第一个值的类型为4
,第二个值的类型为5
。当然,4
和5
不是任何值的类型,因此,这实际上并不是可以存在的任何值的类型,但它仍然是一种类型,只是一个“无人居住”的值,即一个没有任何实例的实例。通常,Julia的类型系统对于无人居住的类型是完全可以的。
我们可以通过坚持要求Tuple{4,5}
的参数必须是类型来防止构造对象Tuple
,但这只是没有做,因为让人们构造这种类型没有真正的危害。目的。即使Julia坚持通过坚持Tuple{4,5}
的参数是类型来阻止您构造Tuple
,但这仍然是有效的 syntax ,因为通常{{ 1}}是任意表达式,而Tuple
和4
是完全有效的表达式,它们的值恰好等于对5
的参数没有多大意义的值。同样,如果我写了Tuple
,即使我们有Tuple{A,B}
和A = 4
,这也是有效的语法。因此,尽管我们可以防止构造B = 5
,但这始终是有效的语法。
还应注意,即使Tuple{4,5}
的参数除非是类型都没有意义,但将类型参数用作值而不是类型通常很有用。例如,Tuple
的类型为[1 2; 3 4]
,其中第二个类型参数是整数,表示数组是二维的,而第一个参数给出数组的元素类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。