gpt4 book ai didi

rebol - REBOL 对象的类型声明

转载 作者:行者123 更新时间:2023-12-04 23:56:27 27 4
gpt4 key购买 nike

我知道你可以输入声明参数并返回函数

    some-func: function [
"some func"
number [ integer! ]
] [
result [ integer! ]
] [
help number
return number
]

some-func 1
some-func "blah"

NUMBER is an integer of value: 1
** Script error: some-func does not allow string! for its number argument

对象属性怎么样?
o: make object! [
a [string!]
b [integer!]
c [o2]
none
]

o2: make object! [
c [string!]
]

an-object: make o [
a: 3.141
b: "an integer"
c: "blah"
]

help an-object

N-OBJECT is an object of value:
a decimal! 3.141
b string! "an integer"
c string! "blah"

我已经将属性的类型声明视为示例,但它仅用于文档吗?

最佳答案

这是一个非常好的问题,也是我多年来一直在思考的问题。事实证明,Rebol 的内部对象存储机制可以处理这个问题,但是没有办法在源代码中表达它。你为什么不问?原因如下:

Rebol 当前具有名称-值对的概念。这就是上下文和对象的表达方式。但是,对象通常需要包含其他信息,而不仅仅是名称或值。数据类型就是一个很好的例子。其他示例是附加到值的注释,以及对值的保护/权限(例如允许读取和写入)。

所以,问题变成了:我们想要在语言语法中支持多少种不同的特性,具体来说我们将如何做到这一点?这些功能的“可选”特性使情况变得更加复杂。因此,您不能真正使用位置语义来描述对象。这意味着添加一个句法方法,这意味着添加关键字(因为 Rebol 确实试图避免标点符号。)

因此,因此,源表单将变得相当冗长,我认为我们可以质疑是否值得我们首先从允许该功能中获得好处。

因此,在这种情况下,Rebol 的简单原则优先于特征蠕变。

说了这么多,如果你有一个简单的方法的想法,让它知道!

关于rebol - REBOL 对象的类型声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15754512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com