3

我正在使用curses 绑定到Red/System 编写一个简单的教程应用程序。像“curses-example.reds”中显示的那样做,效果很好。但是我怎样才能从纯 Red 代码中使用这个绑定呢?我是不是把整个方法弄错了,我真的必须留在红色/系统方言的范围内?

代码尽可能简单:

Red/System [
    File:    "%test.reds"
]

#include %curses/curses.reds

with curses [
    initscr
    getch
    endwin
]

如何正确地在 Red/System 和 Red 之间进行双向日期交换?我没有从这个问题的答案中得到很好的答案。

4

2 回答 2

3

目前,要使用 Red 程序中的 Red/System Code,您需要使用例程!- http://www.red-lang.org/search/label/routine

目前,只有整数!和逻辑!值可以在 Red 和 Red/System 之间透明地传递。必须在例程内转换其他数据类型才能使用。

例如,如果你有一个字符串!datatype 作为例程的参数,Red 会将数据作为红色字符串传递给例程!结构体:

red-string!: alias struct! [
    header  [integer!]          ;-- cell header
    head    [integer!]          ;-- string's head index (zero-based)
    node    [node!]             ;-- series node pointer
    cache   [c-string!]         ;-- (experimental)
]

它需要转换为红色/系统 c 字符串!在您可以在例行程序中使用它之前。同时,您必须照顾到 Red string!s 和 Red/System c-string!s 之间的编码差异。一根红绳!可能是 ISO-8559-1、UCS-2 或 UTF-32 编码。

如果你想返回一个字符串,你必须迎合相反的情况!从例行程序到红色程序。

其他数据类型将需要以类似方式处理。

我敢肯定,将来在 Red 和 Red/System 之间传递值会变得非常容易。但是,我个人不会期望在 Red 达到 1.0 版之后。

于 2015-02-05T02:19:54.157 回答
1

首先使您的代码红色代码不是红色/系统。接下来尝试尽可能接近 red-lang.org 网站上博客中的示例。你需要寻找常规。

我要特别感谢投票否决我的答案的人。

于 2015-02-04T13:35:10.157 回答