3

Red/System にバインドする curses を使用して簡単なチュートリアル アプリケーションを作成しています。「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 としてルーチンに渡します! 構造:

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)
]

Red/System c-string に変換する必要があります。ルーチンで使用する前に。同時に、Red string!s と Red/System c-string!s の間のエンコーディングの違いに対応する必要があります。赤い糸!ISO-8559-1、UCS-2、または UTF-32 でエンコードされている可能性があります。

文字列を返したい場合は、反対のことをしなければなりません! ルーチンから Red プログラムへ。

他のデータ型も同様の方法で処理する必要があります。

Red と Red/System の間での値の受け渡しは、将来的にはるかに簡単になると確信しています。ただし、Red がバージョン 1.0 になるまでは、個人的には期待できません。

于 2015-02-05T02:19:54.157 に答える
1

まず、コードを赤/システムではなく赤コードにします。次に、red-lang.org サイトのブログの例にできるだけ近づけるようにしてください。ルーチンを探す必要があります。

私の回答に反対票を投じてくれた人に、特に感謝したいと思います。

于 2015-02-04T13:35:10.157 に答える