我知道你可以输入声明参数并返回函数
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
Run Code Online (Sandbox Code Playgroud)
虽然对象属性怎么样?
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"
Run Code Online (Sandbox Code Playgroud)
我已经在属性上看到了类型声明作为示例,但它仅用于文档吗?
这是一个非常好的问题,也是我多年来一直在思考的问题.事实证明,Rebol的内部对象存储机制可以处理这个问题,但是没有办法在源代码中表达它.你为什么不问?原因如下:
Rebol目前具有名称 - 值对的概念.这就是上下文和对象的表达方式.但是,对象通常需要包含不仅仅是名称或值的其他信息.数据类型是一个很好的例子.其他示例是附加到值的注释,以及对值的保护/权限(例如允许读取和写入).
因此,问题变成了:我们希望在语言语法中支持多少种功能,具体来说我们将如何做?这些特征的"可选"特征使其变得更加复杂.因此,您无法真正使用位置语义来描述对象.这意味着添加一个语法方法,这意味着添加关键字(因为Rebol真的试图避免标点符号.)
因此,源代码形式将变得相当冗长,我认为我们可以质疑,首先允许该功能是否值得我们获得的好处.
因此,这是Rebol的简单原则优先于特征蠕变的情况.
所有这一切,如果你有一个简单的方法的想法,让它知道!