问题标签 [rebol3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
undefined - VALUE如何?功能工作?
我已将我拥有的一些代码简化为一个小示例,用于测试调用的变量是否class-name
具有分配给它的值:
表达式value? 'class-name
在这里返回 false。另一方面,如果我用作业填写缺失的分支:
这将为value? 'class-name
. 但在第二种情况下,class-name: default-class-name
甚至还没有执行。
我认为类名不应该存在于内存中,所以value? 'class-name
应该返回false。为什么要value?
返回 true 呢?
scope - What's difference between built-in FUNCTION and the FUNCS add-on?
There is a new implementation of FUNCTION in Rebol 3, which allows making variables automatically bound to local context by default.
FUNCTION seems to have a problem with the VALUE? test, as it returns TRUE even if a variable has not been set at runtime yet:
If you call FOO you will get:
That is not the way FUNC works (it only says BAR has a value after the assignment). But then FUNC does not make variables automatically local.
I found the FUNCS primitive here, in a library created by Ladislav Mecir. How is it different, and does it have the same drawbacks?
scope - 为什么局部变量变量不被尊重?
在此代码片段fields-types
中,最终由to-camel-case
函数修改,而不是作为局部变量传递给父函数:
执行给出:
而我希望这些字段类型保持不变:
当然,我可以尝试通过修改to-camel-case
以使用名称副本来规避这一点,但这不是我认为我应该做的事情。
Scala中是否有类似var
and关键字的东西?val
rebol - 将引用的参数传递给 REBOL 3 脚本
我发现几乎不可能将带引号的参数(包含空格)传递给 REBOL 3 脚本。例如:
如果检查system/script/args
,它包含字符串"foo bar 40"
。这是没用的!信息丢失。我需要知道这"foo bar"
是第一个论点,40
也是第二个论点。如果我检查system/options/args
,我会得到以下块:["foo" "bar" "40"]
。再次,没用!信息丢失。
我怀疑这个问题的解决方案是使用某种类型的参数分隔符,例如,
这可以很容易地处理PARSE
,但我仍然不喜欢它。system/options/args
每个传递的参数包含一个字符串应该不是很困难。
REBOL 使用起来很愉快,这是我发现的第一个让我非常失望的东西。:(
rebol - 如何使用其字符串名称调用对象函数
知道为什么以下不起作用吗?(R3)
cgi - 如何使用 Rebol 3 编写“Hello, World”CGI?
让我们从一些简单的事情开始:一个带有被回显的字段的表单。
map - 测试 MAP 成员资格的常用方法!在 Rebol 2 和 3 中工作?
在 Rebol 2 中有一个 HASH!类型以及地图!类型。FIND 和 SELECT 函数以及基于路径的选择都支持这两者:
要检测键不在地图中,您可以使用 FIND 并针对 NONE 进行测试
但是在这种情况下,基于路径的选择会出错:
另一方面,Rebol 3 只有 MAP!。但是 FIND和 SELECT只支持系列类型和 MAP!不再被认为是一个系列。我看到(?)与地图交互的唯一方法是通过路径选择,这在非会员情况下不会引发错误:
...如果您的密钥在变量(或字符串)中,则必须使用 PAREN!
这在 Rebol 2 中也有效,但同样需要注意的是,当您请求不存在的东西时,会抛出错误而不是返回 NONE。
因此,如果我做对了,路径选择是从 Rebol 2 和 3 中的键中检索值的“常见”方式。尽管如此,我没有看到一种常见的测试缺乏成员资格的方式。如何处理这个?
parsing - Rebol 2 和 Rebol 3 在解析中混合 SOME 和 CHANGE 时的区别
想象一个包含单词的块的简化示例:
每个块都需要[c c c c]
。因此,如果值为'a
,则将其更改为'b
。如果值为'b
,则将其更改为'c
。如果值为'c
,我们打印“C”并继续:
在 Rebol 2 中,这按预期工作:
但是 Rebol 3 似乎有一个问题(错误?):
我不知道它是否相关,但包含Rebol 2 和 Rebol 3 之间要解析的更改列表的 Rebol Wikibook说:
某些子规则 - 为了防止 R3 中出现不必要的无限循环,当子规则与输入匹配但不推进它时,此规则也会停止
(注意:@rgchris 在 StackOverflow 聊天中提供的这个简化示例,在此重复以更好地保留“机构知识”并允许更新。)
unicode - 我如何使用单个字节和二进制文件!Rebol 3 中的字节数组?
在 Rebol 2 中,可以to char!
用来产生有效的单字节,您可以在二进制操作中使用,例如 append:
似乎很明智。但是在 Rebol 3 中,你会得到一些不同的东西:
那是因为它没有将单个字符建模为单个字节(由于 Unicode)。所以 (255) 的整数值first data
被翻译成一个两字节的序列:
鉴于 CHAR!不再等同于 Rebol 3 中的一个字节,也没有 BYTE!添加了数据类型(使得 BINARY! 可以被视为一系列这些 BYTE!就像 STRING!是一系列 CHAR!),对于这种情况该怎么办?