Bỏ qua để đến nội dung

Hành động mã

Khi đồ thị là chưa đủ, chiếc hộp Code sẽ chạy một script.

Có bảy ngôn ngữ, tất cả đều chạy trong một hộp cát WebAssembly được nhúng sẵn: không cần trình thông dịch nào trên máy của bạn, và script cũng không truy cập được hệ thống tệp của bạn.

Ngôn ngữCỗ máy
TypeScriptQuickJS (kiểu bị gỡ bỏ lúc biên dịch)
JavaScriptQuickJS
PythonPyodide (CPython biên dịch sang WebAssembly)
LuaLua 5.4 trên WebAssembly
RubyCRuby trên WebAssembly
RWebR
C#.NET trên WebAssembly với Roslyn

Ngôn ngữ mặc định là TypeScript.

Bất kể ngôn ngữ nào, chiếc hộp cũng phơi ra đúng những thứ sau:

Đầu vàovalue (có tên là input), code (chuỗi)
Đầu raresult
Cấu hìnhlanguage, code, timeout, packages
  • input — giá trị nhận được trên cổng vào.
  • vars — các biến của lần chạy.
  • Đầu ra chuẩn của ngôn ngữ (console.log, print, puts, cat, Console.WriteLine) sẽ cấp dữ liệu cho nhật ký của lần chạy.
  • Giá trị trả về đi ra cổng result. Một lỗi hoặc một lần quá thời hạn sẽ đi ra cổng error.

timeout, tính bằng giây: mặc định 5, tối đa 60. Một script vượt quá mức đó sẽ bị ngắt và luồng chạy đi ra cổng error.

Trường packages nhận một danh sách gồm { nom, version }. Các phiên bản chính xác đóng vai trò khóa của bộ nhớ đệm: các phụ thuộc được giải quyết ở lần chạy đầu tiên, được lưu đệm, rồi được gắn vào ngoại tuyến ở mỗi lần chạy sau — kể cả trong CI.

Ngôn ngữNguồn
TypeScript / JavaScriptnpm (toàn bộ được đóng gói sẵn)
PythonCác wheel thuần Python từ PyPI
LuaLuaRocks (mã nguồn thuần Lua)
RubyCác gem thuần Ruby
RCRAN, qua kho WebAssembly của WebR
C#Không có — chỉ thư viện chuẩn của .NET

Rất nhiều nhu cầu đã được các chiếc hộp đáp ứng, vừa dễ đọc hơn vừa nhanh hơn:

Nhu cầuHộp
Trích một giá trị từ một phản hồiMột bộ chọn của liên kết
Định dạng một chuỗiTransform template
Lọc, sắp xếp, tổng hợp một danh sáchDanh sách
Băm, mã hóa, kýMã hóa
Kiểm tra một cấu trúcSchema validate

Hãy để dành chiếc hộp Code cho phần logic thực sự đặc thù.