跳到內容

程式碼動作

當圖不夠用時,Code 方塊可以執行一段腳本。

共有七種語言可用,全部都在內嵌的 WebAssembly 沙箱中執行:您的機器上不需要 任何解譯器,腳本也無法存取您的檔案系統。

語言引擎
TypeScriptQuickJS(型別在編譯時被移除)
JavaScriptQuickJS
PythonPyodide(編譯成 WebAssembly 的 CPython)
Lua以 WebAssembly 執行的 Lua 5.4
Ruby以 WebAssembly 執行的 CRuby
RWebR
C#以 WebAssembly 執行的 .NET,搭配 Roslyn

預設語言是 TypeScript

不論用哪一種語言,這個方塊公開的東西都一樣:

輸入value(名稱為 input)、code(字串)
輸出result
設定languagecodetimeoutpackages
  • input — 從輸入連接埠收到的值。
  • vars執行變數
  • 該語言的標準輸出console.logprintputscatConsole.WriteLine)會餵進執行記錄
  • 回傳的值會走 result 連接埠送出。錯誤或逾時則會走 error

timeout 以秒為單位:預設 5 秒最多 60 秒。超過的腳本會被中斷,執行則 走 error 連接埠。

packages 欄位接受一份 { name, version } 的清單。確切的版本會當作快取鍵: 依賴會在第一次執行時解析、快取起來,之後每次執行都以離線方式掛載 — 在 CI 中也一樣。

語言來源
TypeScript / JavaScriptnpm(整批一起打包)
Python來自 PyPI 的純 Python wheel 套件
LuaLuaRocks(純 Lua 原始碼)
Ruby純 Ruby gem
RCRAN,透過 WebR 的 WebAssembly 儲存庫
C#沒有 — 只有 .NET 標準函式庫

很多需求已經有方塊可以處理,而且更好讀也更快:

需求方塊
從回應中取出一個值一個連結選擇器
格式化一段字串轉換
篩選、排序、彙總一份清單清單
雜湊、編碼、簽章編碼
檢查某個結構驗證結構描述

請把 Code 方塊留給真正特殊的邏輯。