給定一個如下所示的腳本,但不能編譯,我如何使用#call
來使用Red/System中的Red函數?如何將#call指令用於字符串數據類型爲參數的Red函數?
Red []
pff: function [a [string!] ][print a]
#system [
#call [pff "hello"]
]
存在類型不匹配。你需要做些什麼來將字符串轉換爲適當的Red/System數據類型?
給定一個如下所示的腳本,但不能編譯,我如何使用#call
來使用Red/System中的Red函數?如何將#call指令用於字符串數據類型爲參數的Red函數?
Red []
pff: function [a [string!] ][print a]
#system [
#call [pff "hello"]
]
存在類型不匹配。你需要做些什麼來將字符串轉換爲適當的Red/System數據類型?
爲了擴大對彼得的正確答案,在這種特殊情況下,你需要內在的C字符串作爲紅色串!使用string/load
,像這樣:
Red []
pff: function [a [string!] ][print a]
#system [
s: "hello"
hello: string/load s 1 + length? s UTF-8
#call [pff hello]
]
注:
Red/System的字符串現在只是ASCII,因此您需要指定UTF-8作爲源編碼格式。
您需要傳遞計算終端NUL(因此爲+ 1
)的C字符串的大小。
內部API沒有記錄,因爲它沒有最終確定。如果您需要任何有關它的信息,請隨時在此處或我們的其他溝通渠道詢問。
您需要調用Red運行時API來執行轉換。 Red運行時API尚未記錄,因此您必須閱讀代碼或詢問少數熟悉它的人員之一。 (我做了一些兩個)。
我寫了一個函數來轉換紅色的字符串!到一個UTF-8編碼的紅色/系統c-string !,它在github。