Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Przetwarzanie danych: rekordy, listy, mapy, błędy

INTERMEDIATERUNNABLE_LOCALKretS

Parsowanie wierszy tekstu do rekordów (`record`), filtrowanie i sumowanie w pętli `for`, grupowanie w `Map<String, Int>`, typy nullable (`parseInt` → `Int64?`, `Map.get` → `V?`) z `orElse`, obsługa błędu `try`/`catch` i `throw`, stała `const`.

Edycja i zapisane wyniki

Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.

Kanoniczne pliki projektu

module Main

const LIMIT: Int = 100

record Order {
    customer: String
    amount: Int
}

// Zamienia wiersz "klient;kwota" na rekord. Zły wiersz kończy się wyjątkiem.
fn parse(line: String) -> Order {
    let parts = line.split(";")
    if parts.size != 2 {
        throw "zły wiersz: " + line
    }
    // parseInt zwraca Int64? (null, gdy tekst nie jest liczbą) — orElse podaje wartość zastępczą.
    let amount = orElse(parseInt(parts.get(1).trim()), -1)
    if amount < 0 {
        throw "zła kwota: " + parts.get(1)
    }
    return Order(customer = parts.get(0).trim(), amount = amount)
}

fn Start() -> String {
    let lines = ["ala; 30", "bob; 120", "ala; 45", "zły wiersz", "cecylia; x", "bob; 15"]
    var orders: List<Order> = []
    var rejected = 0
    for line in lines {
        try {
            orders.add(parse(line))
        } catch problem {
            rejected = rejected + 1
        }
    }
    var totals: Map<String, Int> = map()
    var large = 0
    for order in orders {
        // Map.get zwraca V? — brak klucza to null.
        totals.set(order.customer, orElse(totals.get(order.customer), 0) + order.amount)
        if order.amount > LIMIT {
            large = large + 1
        }
    }
    var parts: List<String> = []
    for customer in totals {
        parts.add(customer + "=" + toString(orElse(totals.get(customer), 0)))
    }
    return "przyjęte " + toString(orders.size) + ", odrzucone " + toString(rejected) + ", duże " + toString(large) + "; " + parts.join(", ")
}

fn Shutdown() {
}

Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  2. Pusta linia oddziela fragmenty źródła.
  3. const LIMIT: Int = 100Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  4. Pusta linia oddziela fragmenty źródła.
  5. record Order {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. customer: StringOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. amount: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  9. Pusta linia oddziela fragmenty źródła.
  10. // Zamienia wiersz "klient;kwota" na rekord. Zły wiersz kończy się wyjątkiem.Komentarz autora; nie jest wykonywany.
  11. fn parse(line: String) -> Order {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  12. let parts = line.split(";")Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  13. if parts.size != 2 {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  14. throw "zły wiersz: " + lineSterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  15. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  16. // parseInt zwraca Int64? (null, gdy tekst nie jest liczbą) — orElse podaje wartość zastępczą.Komentarz autora; nie jest wykonywany.
  17. let amount = orElse(parseInt(parts.get(1).trim()), -1)Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  18. if amount < 0 {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  19. throw "zła kwota: " + parts.get(1)Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  20. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  21. return Order(customer = parts.get(0).trim(), amount = amount)Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  22. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  23. Pusta linia oddziela fragmenty źródła.
  24. fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  25. let lines = ["ala; 30", "bob; 120", "ala; 45", "zły wiersz", "cecylia; x", "bob; 15"]Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  26. var orders: List<Order> = []Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  27. var rejected = 0Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  28. for line in lines {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  29. try {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  30. orders.add(parse(line))Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  31. } catch problem {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  32. rejected = rejected + 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  33. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  34. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  35. var totals: Map<String, Int> = map()Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  36. var large = 0Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  37. for order in orders {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  38. // Map.get zwraca V? — brak klucza to null.Komentarz autora; nie jest wykonywany.
  39. totals.set(order.customer, orElse(totals.get(order.customer), 0) + order.amount)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  40. if order.amount > LIMIT {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  41. large = large + 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  42. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  43. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  44. var parts: List<String> = []Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  45. for customer in totals {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  46. parts.add(customer + "=" + toString(orElse(totals.get(customer), 0)))Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  47. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  48. return "przyjęte " + toString(orders.size) + ", odrzucone " + toString(rejected) + ", duże " + toString(large) + "; " + parts.join(", ")Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  49. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  50. Pusta linia oddziela fragmenty źródła.
  51. fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  52. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  53. Pusta linia oddziela fragmenty źródła.

Wynik i typowy błąd

„przyjęte 4, odrzucone 2, duże 1; ala=75, bob=135” — mapa jest przechodzona po kluczach rosnąco (deterministycznie).

Na co uważać

Odczyt `.isOk`/`.value` albo arytmetyka na wartości `Int64?` bez `orElse`/`unwrap` → `KCS-KRS-0322` / `KCS-KRS-0320` (sprawdzone w tej rundzie eksportu).

Wymagania wersji i procedura lokalna

sdk
1.0.0-rc.3+kret.local.3
sdkInfoReports
1.0.0-rc.3
core
1.0.0-test.6.11-draft.1
os
Windows 11 x64
dotnet
.NET 10 runtime

Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.

  1. checkkret check . --jsonKatalog: project · Oczekiwany kod wyjścia: 0
  2. runkret run . --policy host-policy.json --data {DATA}Katalog: project · Oczekiwany kod wyjścia: 0

Wyniki zapisane w pakiecie źródłowym

To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.

# EXPECTED_OUTPUT — KRETS-I01-DataProcessing
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:40Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.

### 1. check  (exit 0, PASS)
> kret check . --json
{
  "format": "kret-diagnostics/1",
  "project": "<project>",
  "succeeded": true,
  "plugin": {
    "id": "LOCAL-KPL-KSM2DATA",
    "name": "DataProcessing",
    "version": "1.0.0",
    "profile": "standard",
    "database": false
  },
  "permissions": {
    "required": [],
    "optional": []
  },
  "handlers": {
    "lifecycle": [
      "start",
      "shutdown"
    ],
    "events": [],
    "commands": []
  },
  "diagnostics": []
}

### 2. run  (exit 0, PASS)
> kret run . --policy host-policy.json --data {DATA}
{
  "broker": {
    "pid": 18332,
    "startupMs": 44.9461,
    "pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",
    "allowProvisionalRisk": false,
    "memoryIdle": {
      "managedBytes": 1193216,
      "allocatedBytes": 1190576,
      "workingSetBytes": 32538624,
      "privateBytes": 10117120,
      "peakWorkingSetBytes": 32538624,
      "cpuMs": 93.75
    }
  },
  "brokerWithPlugins": {
    "memory": {
      "managedBytes": 1533608,
      "allocatedBytes": 1530488,
      "workingSetBytes": 38825984,
      "privateBytes": 13914112,
      "peakWorkingSetBytes": 38830080,
      "cpuMs": 171.875
    }
  },
  "plugins": [
    {
      "package": "<project>\\Build",
      "admitted": true,
      "startMs": 145.8753,
      "subject": "LOCAL-KPL-KSM2DATA",
      "instance": "01a19725-d061-7f1f-9bf1-e84a4d7aacb1",
      "pid": 27504,
      "jobObject": true,
      "isolation": {
        "level": "Restricted",
        "restrictedToken": true,
        "lowIntegrity": true,
        "appContainer": false
      },
      "limits": {
        "profile": "standard",
        "scriptMemoryBytes": 67108864,
        "processMemoryBytes": 201326592,
        "cpuPercent": 25,
        "maxInstructions": 50000000,
        "clamped": []
      },
      "calls": [
        {
          "operation": "start",
          "ok": true,
          "status": "Completed",
          "type": "String",
          "value": "przyj\u0119te 4, odrzucone 2, du\u017Ce 1; ala=75, bob=135",
          "brokerMs": 11.6977,
          "vmMs": 6.8457,
          "instructions": 554,
          "hostCalls": 0,
          "pluginReportedMemory": {
            "managedBytes": 784088,
            "allocatedBytes": 781904,
            "workingSetBytes": 32444416,
            "privateBytes": 11292672,
            "peakWorkingSetBytes": 32550912,
            "cpuMs": 93.75
          }
        },
        {
          "operation": "shutdown",
          "ok": true,
          "status": "Completed",
          "type": "Unit",
          "value": null,
          "brokerMs": 0.5743,
          "vmMs": 0.0014,
          "instructions": 1,
          "hostCalls": 0,
          "pluginReportedMemory": {
            "managedBytes": 792312,
            "allocatedBytes": 790104,
            "workingSetBytes": 32559104,
            "privateBytes": 11309056,
            "peakWorkingSetBytes": 32559104,
            "cpuMs": 93.75
          }
        }
      ],
      "processMemoryMeasuredByBroker": {
        "workingSetBytes": 32555008,
        "privateBytes": 11309056,
        "peakWorkingSetBytes": 32555008,
        "cpuMs": 93.75
      },
      "summary": {
        "exitCode": 0,
        "killed": false,
        "hostCalls": 0,
        "denials": 0,
        "peakCommitBytes": 12005376,
        "log": []
      }
    }
  ],
  "brokerAfterClose": {
    "memory": {
      "managedBytes": 580744,
      "allocatedBytes": 1530488,
      "workingSetBytes": 39866368,
      "privateBytes": 14442496,
      "peakWorkingSetBytes": 39866368,
      "cpuMs": 171.875
    }
  },
  "audit": {
    "entries": 10,
    "denials": 0,
    "grantsIssued": 0,
    "denied": []
  },
  "exitCode": 0
}


Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. # EXPECTED_OUTPUT — KRETS-I01-DataProcessingOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. # Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:40Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. # Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. Pusta linia oddziela fragmenty źródła.
  5. ### 1. check (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. > kret check . --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. "format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  9. "project": "<project>",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  10. "succeeded": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  11. "plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  12. "id": "LOCAL-KPL-KSM2DATA",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  13. "name": "DataProcessing",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  14. "version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  15. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  16. "database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  17. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  18. "permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  19. "required": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  20. "optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  21. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  22. "handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  23. "lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  24. "start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  25. "shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  26. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  27. "events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  28. "commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  29. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  30. "diagnostics": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  31. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  32. Pusta linia oddziela fragmenty źródła.
  33. ### 2. run (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  34. > kret run . --policy host-policy.json --data {DATA}Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  35. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  36. "broker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  37. "pid": 18332,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  38. "startupMs": 44.9461,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  39. "pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  40. "allowProvisionalRisk": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  41. "memoryIdle": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  42. "managedBytes": 1193216,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  43. "allocatedBytes": 1190576,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  44. "workingSetBytes": 32538624,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  45. "privateBytes": 10117120,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  46. "peakWorkingSetBytes": 32538624,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  47. "cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  48. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  49. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  50. "brokerWithPlugins": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  51. "memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  52. "managedBytes": 1533608,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  53. "allocatedBytes": 1530488,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  54. "workingSetBytes": 38825984,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  55. "privateBytes": 13914112,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  56. "peakWorkingSetBytes": 38830080,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  57. "cpuMs": 171.875Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  58. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  59. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  60. "plugins": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  61. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  62. "package": "<project>\\Build",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  63. "admitted": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  64. "startMs": 145.8753,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  65. "subject": "LOCAL-KPL-KSM2DATA",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  66. "instance": "01a19725-d061-7f1f-9bf1-e84a4d7aacb1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  67. "pid": 27504,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  68. "jobObject": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  69. "isolation": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  70. "level": "Restricted",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  71. "restrictedToken": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  72. "lowIntegrity": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  73. "appContainer": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  74. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  75. "limits": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  76. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  77. "scriptMemoryBytes": 67108864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  78. "processMemoryBytes": 201326592,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  79. "cpuPercent": 25,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  80. "maxInstructions": 50000000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  81. "clamped": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  82. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  83. "calls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  84. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  85. "operation": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  86. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  87. "status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  88. "type": "String",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  89. "value": "przyj\u0119te 4, odrzucone 2, du\u017Ce 1; ala=75, bob=135",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  90. "brokerMs": 11.6977,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  91. "vmMs": 6.8457,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  92. "instructions": 554,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  93. "hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  94. "pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  95. "managedBytes": 784088,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  96. "allocatedBytes": 781904,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  97. "workingSetBytes": 32444416,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  98. "privateBytes": 11292672,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  99. "peakWorkingSetBytes": 32550912,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  100. "cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  101. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  102. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  103. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  104. "operation": "shutdown",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  105. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  106. "status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  107. "type": "Unit",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  108. "value": null,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  109. "brokerMs": 0.5743,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  110. "vmMs": 0.0014,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  111. "instructions": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  112. "hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  113. "pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  114. "managedBytes": 792312,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  115. "allocatedBytes": 790104,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  116. "workingSetBytes": 32559104,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  117. "privateBytes": 11309056,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  118. "peakWorkingSetBytes": 32559104,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  119. "cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  120. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  121. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  122. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  123. "processMemoryMeasuredByBroker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  124. "workingSetBytes": 32555008,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  125. "privateBytes": 11309056,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  126. "peakWorkingSetBytes": 32555008,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  127. "cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  128. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  129. "summary": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  130. "exitCode": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  131. "killed": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  132. "hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  133. "denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  134. "peakCommitBytes": 12005376,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  135. "log": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  136. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  137. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  138. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  139. "brokerAfterClose": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  140. "memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  141. "managedBytes": 580744,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  142. "allocatedBytes": 1530488,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  143. "workingSetBytes": 39866368,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  144. "privateBytes": 14442496,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  145. "peakWorkingSetBytes": 39866368,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  146. "cpuMs": 171.875Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  147. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  148. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  149. "audit": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  150. "entries": 10,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  151. "denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  152. "grantsIssued": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  153. "denied": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  154. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  155. "exitCode": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  156. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  157. Pusta linia oddziela fragmenty źródła.
  158. Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów

null
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. nullOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Pochodzenie i integralność

KRET_LANGUAGE_KRETS.zip:KretS/Examples/INTERMEDIATE_DataProcessing/example.json

02_PLAYGROUND/EXAMPLES/KRETS-I01-DataProcessing.json
SHA-256 2480AF96A8B2B9C632F5C00CE25BB25F2AEBBAF2DCEAE2145F6BFA8798F0EE91

Materiały źródłowe do tego tematu

Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.

KRETS-I01-DataProcessing — Przetwarzanie danych: rekordy, listy, mapy, błędy

KRETS-I01-DataProcessing — Przetwarzanie danych: rekordy, listy, mapy, błędy

🇬🇧 English version below.
PoleWartość
TechnologiaKretS
PoziomINTERMEDIATE
KlasyfikacjaRUNNABLE_LOCAL — Uruchamialny lokalnie (SDK, izolowany proces pluginu)
PlaygroundLOCAL_EXECUTE — lokalnie: wykonanie w KretStudio / SDK (publicznie: tylko statycznie)
SDK1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany)
Wynik testuTEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt

Co pokazuje

Parsowanie wierszy tekstu do rekordów (record), filtrowanie i sumowanie w pętli for, grupowanie w Map<String, Int>, typy nullable (parseInt → Int64?, Map.get → V?) z orElse, obsługa błędu try/catch i throw, stała const.

Pliki

Plik
Script/Main.krs
host-policy.json
plugin.kretl

Jak uruchomić

Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.

  1. kret check . --json — walidacja
  2. kret run . --policy host-policy.json --data {DATA} — uruchomienie

Oczekiwany wynik

„przyjęte 4, odrzucone 2, duże 1; ala=75, bob=135” — mapa jest przechodzona po kluczach rosnąco (deterministycznie).

Najczęstszy błąd

Odczyt .isOk/.value albo arytmetyka na wartości Int64? bez orElse/unwrap → KCS-KRS-0322 / KCS-KRS-0320 (sprawdzone w tej rundzie eksportu).

Otwórz cały rozdział ze źródłem →

Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności