Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Klasy, interfejsy, dziedziczenie, generyki [2.0]

ADVANCEDRUNNABLE_LOCALKretS

Interfejs, klasa z konstruktorem `init`, dziedziczenie z `super(...)` i `override`, klasa generyczna `Pair<A, B>`, funkcja generyczna z ograniczeniem `T: Shape`, polimorfizm przez interfejs. Kod bazuje na oficjalnym przykładzie SDK `ObjectOriented`.

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

interface Shape {
    fn area() -> Int
    fn name() -> String
}

class Rect : Shape {
    width: Int
    height: Int
    init(width: Int, height: Int) {
        this.width = width
        this.height = height
    }
    fn area() -> Int {
        return this.width * this.height
    }
    fn name() -> String {
        return "prostokąt"
    }
}

class Square : Rect {
    init(side: Int) {
        super(side, side)
    }
    override fn name() -> String {
        return "kwadrat"
    }
}

class Pair<A, B> {
    first: A
    second: B
    init(first: A, second: B) {
        this.first = first
        this.second = second
    }
    fn swap() -> Pair<B, A> {
        return Pair(this.second, this.first)
    }
}

fn largest<T: Shape>(items: List<T>) -> T {
    var best = items.get(0)
    for item in items {
        if item.area() > best.area() {
            best = item
        }
    }
    return best
}

fn Start() -> String {
    let shapes: List<Shape> = [Rect(2, 3), Square(4), Rect(1, 10)]
    let biggest = largest(shapes)
    let pair = Pair("pole", biggest.area()).swap()
    var kinds: List<String> = []
    for s in shapes {
        if s is Square {
            kinds.add("Square")
        } else {
            kinds.add("Rect")
        }
    }
    return biggest.name() + " " + toString(pair.first) + " (" + pair.second + "); typy: " + kinds.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. interface Shape {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. fn area() -> IntSygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  5. fn name() -> StringSygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  6. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  7. Pusta linia oddziela fragmenty źródła.
  8. class Rect : Shape {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  9. width: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  10. height: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  11. init(width: Int, height: Int) {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  12. this.width = widthOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  13. this.height = heightOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  14. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  15. fn area() -> Int {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  16. return this.width * this.heightZwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  17. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  18. fn name() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  19. return "prostokąt"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  20. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  21. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  22. Pusta linia oddziela fragmenty źródła.
  23. class Square : Rect {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  24. init(side: Int) {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  25. super(side, side)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. override fn name() -> String {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  28. return "kwadrat"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  29. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  30. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  31. Pusta linia oddziela fragmenty źródła.
  32. class Pair<A, B> {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  33. first: AOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  34. second: BOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  35. init(first: A, second: B) {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  36. this.first = firstOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  37. this.second = secondOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  38. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  39. fn swap() -> Pair<B, A> {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  40. return Pair(this.second, this.first)Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  41. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  42. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  43. Pusta linia oddziela fragmenty źródła.
  44. fn largest<T: Shape>(items: List<T>) -> T {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  45. var best = items.get(0)Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  46. for item in items {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  47. if item.area() > best.area() {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  48. best = itemOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  49. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  50. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  51. return bestZwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  52. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  53. Pusta linia oddziela fragmenty źródła.
  54. fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  55. let shapes: List<Shape> = [Rect(2, 3), Square(4), Rect(1, 10)]Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  56. let biggest = largest(shapes)Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  57. let pair = Pair("pole", biggest.area()).swap()Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  58. var kinds: List<String> = []Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  59. for s in shapes {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  60. if s is Square {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  61. kinds.add("Square")Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  62. } else {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  63. kinds.add("Rect")Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  64. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  65. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  66. return biggest.name() + " " + toString(pair.first) + " (" + pair.second + "); typy: " + kinds.join(",")Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  67. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  68. Pusta linia oddziela fragmenty źródła.
  69. fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  70. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  71. Pusta linia oddziela fragmenty źródła.

Wynik i typowy błąd

„kwadrat 16 (pole); typy: Rect,Square,Rect” oraz listing bytecode z funkcją `Start`.

Na co uważać

Nadpisanie metody bez `override` albo próba przeciążenia funkcji (nazwy funkcji są unikalne) — błąd kompilacji.

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
  3. disasmkret disasm .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-A01-ClassesInterfacesGenerics
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:37Z). Ś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-KSA2CLSS",
    "name": "ClassesInterfacesGenerics",
    "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": 16676,
    "startupMs": 41.2346,
    "pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",
    "allowProvisionalRisk": false,
    "memoryIdle": {
      "managedBytes": 1193320,
      "allocatedBytes": 1190680,
      "workingSetBytes": 32530432,
      "privateBytes": 10113024,
      "peakWorkingSetBytes": 32530432,
      "cpuMs": 93.75
    }
  },
  "brokerWithPlugins": {
    "memory": {
      "managedBytes": 1540704,
      "allocatedBytes": 1537584,
      "workingSetBytes": 38834176,
      "privateBytes": 13754368,
      "peakWorkingSetBytes": 38862848,
      "cpuMs": 187.5
    }
  },
  "plugins": [
    {
      "package": "<project>\\Build",
      "admitted": true,
      "startMs": 141.8711,
      "subject": "LOCAL-KPL-KSA2CLSS",
      "instance": "01a19725-c2cd-7d68-9c34-73d3b839b71f",
      "pid": 8304,
      "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": "kwadrat 16 (pole); typy: Rect,Square,Rect",
          "brokerMs": 13.4692,
          "vmMs": 7.3544,
          "instructions": 350,
          "hostCalls": 0,
          "pluginReportedMemory": {
            "managedBytes": 792992,
            "allocatedBytes": 790784,
            "workingSetBytes": 32157696,
            "privateBytes": 11137024,
            "peakWorkingSetBytes": 32526336,
            "cpuMs": 46.875
          }
        },
        {
          "operation": "shutdown",
          "ok": true,
          "status": "Completed",
          "type": "Unit",
          "value": null,
          "brokerMs": 0.7775,
          "vmMs": 0.0055,
          "instructions": 1,
          "hostCalls": 0,
          "pluginReportedMemory": {
            "managedBytes": 798576,
            "allocatedBytes": 796344,
            "workingSetBytes": 32280576,
            "privateBytes": 11153408,
            "peakWorkingSetBytes": 32526336,
            "cpuMs": 46.875
          }
        }
      ],
      "processMemoryMeasuredByBroker": {
        "workingSetBytes": 32272384,
        "privateBytes": 11153408,
        "peakWorkingSetBytes": 32526336,
        "cpuMs": 78.125
      },
      "summary": {
        "exitCode": 0,
        "killed": false,
        "hostCalls": 0,
        "denials": 0,
        "peakCommitBytes": 12046336,
        "log": []
      }
    }
  ],
  "brokerAfterClose": {
    "memory": {
      "managedBytes": 584664,
      "allocatedBytes": 1537584,
      "workingSetBytes": 39948288,
      "privateBytes": 14491648,
      "peakWorkingSetBytes": 39948288,
      "cpuMs": 187.5
    }
  },
  "audit": {
    "entries": 10,
    "denials": 0,
    "grantsIssued": 0,
    "denied": []
  },
  "exitCode": 0
}

### 3. disasm  (exit 0, PASS)
> kret disasm .
module kretos.docs.krets.oop  ; strings=12 records=0 imports=0 functions=10

fn #0 Main.Rect.area(Rect) -> Int64  ; locals=1 maxStack=2 code=24
  ; wiersz 16
  00000  Load 0
  00003  GetFld 1 0
  00008  UnboxI
  00009  Load 0
  00012  GetFld 1 1
  00017  UnboxI
  00018  MulI
  00019  BoxI
  00020  Ret
  ; wiersz 17
  00021  Trap 1

fn #1 Main.Rect.name(Rect) -> String  ; locals=1 maxStack=1 code=7
  ; wiersz 19
  00000  ConstStr #0 "prostokąt"
  00003  Ret
  ; wiersz 20
  00004  Trap 1

fn #2 Main.Rect.$init(Rect, Int64, Int64) -> Unit  ; locals=5 maxStack=2 code=39
  00000  Load 1
  00003  UnboxI
  00004  Store 3
  00007  Load 2
  00010  UnboxI
  00011  Store 4
  ; wiersz 12
  00014  Load 0
  00017  Load 3
  00020  BoxI
  00021  SetFld 1 0
  ; wiersz 13
  00026  Load 0
  00029  Load 4
  00032  BoxI
  00033  SetFld 1 1
  ; wiersz 14
  00038  Ret

fn #3 Main.Square.name(Square) -> String  ; locals=1 maxStack=1 code=7
  ; wiersz 28
  00000  ConstStr #1 "kwadrat"
  00003  Ret
  ; wiersz 29
  00004  Trap 1

fn #4 Main.Square.$init(Square, Int64) -> Unit  ; locals=3 maxStack=3 code=22
  00000  Load 1
  00003  UnboxI
  00004  Store 2
  ; wiersz 25
  00007  Load 0
  00010  Load 2
  00013  BoxI
  00014  Load 2
  00017  BoxI
  00018  Call #2 Main.Rect.$init
  ; wiersz 26
  00021  Ret

fn #5 Main.Pair.swap(Pair) -> Pair<B, A>  ; locals=1 maxStack=4 code=27
  ; wiersz 40
  00000  NewObj 3
  00003  Dup
  00004  Load 0
  00007  GetFld 3 1
  00012  Load 0
  00015  GetFld 3 0
  00020  Call #6 Main.Pair.$init
  00023  Ret
  ; wiersz 41
  00024  Trap 1

fn #6 Main.Pair.$init(Pair, A, B) -> Unit  ; locals=3 maxStack=2 code=23
  ; wiersz 36
  00000  Load 0
  00003  Load 1
  00006  SetFld 3 0
  ; wiersz 37
  00011  Load 0
  00014  Load 2
  00017  SetFld 3 1
  ; wiersz 38
  00022  Ret

fn #7 Main.largest(List<T>) -> T  ; locals=6 maxStack=2 code=108
  ; wiersz 45
  00000  Load 0
  00003  ConstI8 0
  00005  CallBuiltin listGet
  00008  Store 1
  ; wiersz 46
  00011  Load 0
  00014  Store 2
  00017  Load 2
  00020  CallBuiltin listSize
  00023  Store 4
  00026  ConstI8 0
  00028  Store 3
  00031  Load 3
  00034  Load 4
  00037  CmpI Lt
  00039  JmpF -> 101
  00044  Load 2
  00047  Load 3
  00050  CallBuiltin listGet
  00053  Store 5
  ; wiersz 47
  00056  Load 5
  00059  CallVirt area/0
  00064  UnboxI
  00065  Load 1
  00068  CallVirt area/0
  00073  UnboxI
  00074  CmpI Gt
  00076  JmpF -> 87
  ; wiersz 48
  00081  Load 5
  00084  Store 1
  00087  Load 3
  00090  ConstI8 1
  00092  AddI
  00093  Store 3
  00096  Jmp -> 31
  ; wiersz 51
  00101  Load 1
  00104  Ret
  ; wiersz 52
  00105  Trap 1

export fn #8 Main.Start() -> String  ; locals=8 maxStack=6 code=234
  ; wiersz 55
  00000  NewObj 1
  00003  Dup
  00004  ConstI8 2
  00006  BoxI
  00007  ConstI8 3
  00009  BoxI
  00010  Call #2 Main.Rect.$init
  00013  NewObj 2
  00016  Dup
  00017  ConstI8 4
  00019  BoxI
  00020  Call #4 Main.Square.$init
  00023  NewObj 1
  00026  Dup
  00027  ConstI8 1
  00029  BoxI
  00030  ConstI8 10
  00032  BoxI
  00033  Call #2 Main.Rect.$init
  00036  NewList 3
  00039  Store 0
  ; wiersz 56
  00042  Load 0
  00045  Call #7 Main.largest
  00048  Store 1
  ; wiersz 57
  00051  NewObj 3
  00054  Dup
  00055  ConstStr #3 "pole"
  00058  Load 1
  00061  CallVirt area/0
  00066  UnboxI
  00067  BoxI
  00068  Call #6 Main.Pair.$init
  00071  CallVirt swap/0
  00076  Store 2
  ; wiersz 58
  00079  NewList 0
  00082  Store 3
  ; wiersz 59
  00085  Load 0
  00088  Store 4
  00091  Load 4
  00094  CallBuiltin listSize
  00097  Store 6
  00100  ConstI8 0
  00102  Store 5
  00105  Load 5
  00108  Load 6
  00111  CmpI Lt
  00113  JmpF -> 178
  00118  Load 4
  00121  Load 5
  00124  CallBuiltin listGet
  00127  Store 7
  ; wiersz 60
  00130  Load 7
  00133  IsClass 2
  00136  JmpF -> 155
  ; wiersz 61
  00141  Load 3
  00144  ConstStr #5 "Square"
  00147  CallBuiltin listAdd
  00150  Jmp -> 164
  ; wiersz 63
  00155  Load 3
  00158  ConstStr #6 "Rect"
  00161  CallBuiltin listAdd
  00164  Load 5
  00167  ConstI8 1
  00169  AddI
  00170  Store 5
  00173  Jmp -> 105
  ; wiersz 66
  00178  Load 1
  00181  CallVirt name/0
  00186  ConstStr #8 " "
  00189  Concat
  00190  Load 2
  00193  GetFld 3 0
  00198  UnboxI
  00199  CallBuiltin toStringI
  00202  Concat
  00203  ConstStr #9 " ("
  00206  Concat
  00207  Load 2
  00210  GetFld 3 1
  00215  Concat
  00216  ConstStr #10 "); typy: "
  00219  Concat
  00220  Load 3
  00223  ConstStr #11 ","
  00226  CallBuiltin listJoin
  00229  Concat
  00230  Ret
  ; wiersz 67
  00231  Trap 1

export fn #9 Main.Shutdown() -> Unit  ; locals=0 maxStack=0 code=1
  ; wiersz 70
  00000  Ret


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-A01-ClassesInterfacesGenericsOdczytaj 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:37Z). Ś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-KSA2CLSS",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  13. "name": "ClassesInterfacesGenerics",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": 16676,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  38. "startupMs": 41.2346,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": 1193320,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  43. "allocatedBytes": 1190680,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  44. "workingSetBytes": 32530432,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  45. "privateBytes": 10113024,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  46. "peakWorkingSetBytes": 32530432,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": 1540704,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  53. "allocatedBytes": 1537584,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  54. "workingSetBytes": 38834176,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  55. "privateBytes": 13754368,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  56. "peakWorkingSetBytes": 38862848,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  57. "cpuMs": 187.5Pole 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": 141.8711,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  65. "subject": "LOCAL-KPL-KSA2CLSS",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  66. "instance": "01a19725-c2cd-7d68-9c34-73d3b839b71f",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  67. "pid": 8304,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": "kwadrat 16 (pole); typy: Rect,Square,Rect",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  90. "brokerMs": 13.4692,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  91. "vmMs": 7.3544,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  92. "instructions": 350,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": 792992,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  96. "allocatedBytes": 790784,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  97. "workingSetBytes": 32157696,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  98. "privateBytes": 11137024,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  99. "peakWorkingSetBytes": 32526336,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  100. "cpuMs": 46.875Pole 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.7775,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  110. "vmMs": 0.0055,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": 798576,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  115. "allocatedBytes": 796344,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  116. "workingSetBytes": 32280576,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  117. "privateBytes": 11153408,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  118. "peakWorkingSetBytes": 32526336,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  119. "cpuMs": 46.875Pole 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": 32272384,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  125. "privateBytes": 11153408,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  126. "peakWorkingSetBytes": 32526336,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  127. "cpuMs": 78.125Pole 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": 12046336,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": 584664,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  142. "allocatedBytes": 1537584,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  143. "workingSetBytes": 39948288,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  144. "privateBytes": 14491648,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  145. "peakWorkingSetBytes": 39948288,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  146. "cpuMs": 187.5Pole 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. ### 3. disasm (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  159. > kret disasm .Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  160. module kretos.docs.krets.oop ; strings=12 records=0 imports=0 functions=10Deklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  161. Pusta linia oddziela fragmenty źródła.
  162. fn #0 Main.Rect.area(Rect) -> Int64 ; locals=1 maxStack=2 code=24Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  163. ; wiersz 16Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  164. 00000 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  165. 00003 GetFld 1 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  166. 00008 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  167. 00009 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  168. 00012 GetFld 1 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  169. 00017 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  170. 00018 MulIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  171. 00019 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  172. 00020 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  173. ; wiersz 17Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  174. 00021 Trap 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  175. Pusta linia oddziela fragmenty źródła.
  176. fn #1 Main.Rect.name(Rect) -> String ; locals=1 maxStack=1 code=7Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  177. ; wiersz 19Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  178. 00000 ConstStr #0 "prostokąt"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  179. 00003 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  180. ; wiersz 20Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  181. 00004 Trap 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  182. Pusta linia oddziela fragmenty źródła.
  183. fn #2 Main.Rect.$init(Rect, Int64, Int64) -> Unit ; locals=5 maxStack=2 code=39Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  184. 00000 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  185. 00003 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  186. 00004 Store 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  187. 00007 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  188. 00010 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  189. 00011 Store 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  190. ; wiersz 12Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  191. 00014 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  192. 00017 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  193. 00020 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  194. 00021 SetFld 1 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  195. ; wiersz 13Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  196. 00026 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  197. 00029 Load 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  198. 00032 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  199. 00033 SetFld 1 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  200. ; wiersz 14Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  201. 00038 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  202. Pusta linia oddziela fragmenty źródła.
  203. fn #3 Main.Square.name(Square) -> String ; locals=1 maxStack=1 code=7Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  204. ; wiersz 28Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  205. 00000 ConstStr #1 "kwadrat"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  206. 00003 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  207. ; wiersz 29Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  208. 00004 Trap 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  209. Pusta linia oddziela fragmenty źródła.
  210. fn #4 Main.Square.$init(Square, Int64) -> Unit ; locals=3 maxStack=3 code=22Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  211. 00000 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  212. 00003 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  213. 00004 Store 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  214. ; wiersz 25Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  215. 00007 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  216. 00010 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  217. 00013 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  218. 00014 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  219. 00017 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  220. 00018 Call #2 Main.Rect.$initOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  221. ; wiersz 26Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  222. 00021 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  223. Pusta linia oddziela fragmenty źródła.
  224. fn #5 Main.Pair.swap(Pair) -> Pair<B, A> ; locals=1 maxStack=4 code=27Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  225. ; wiersz 40Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  226. 00000 NewObj 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  227. 00003 DupOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  228. 00004 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  229. 00007 GetFld 3 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  230. 00012 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  231. 00015 GetFld 3 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  232. 00020 Call #6 Main.Pair.$initOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  233. 00023 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  234. ; wiersz 41Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  235. 00024 Trap 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  236. Pusta linia oddziela fragmenty źródła.
  237. fn #6 Main.Pair.$init(Pair, A, B) -> Unit ; locals=3 maxStack=2 code=23Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  238. ; wiersz 36Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  239. 00000 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  240. 00003 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  241. 00006 SetFld 3 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  242. ; wiersz 37Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  243. 00011 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  244. 00014 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  245. 00017 SetFld 3 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  246. ; wiersz 38Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  247. 00022 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  248. Pusta linia oddziela fragmenty źródła.
  249. fn #7 Main.largest(List<T>) -> T ; locals=6 maxStack=2 code=108Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  250. ; wiersz 45Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  251. 00000 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  252. 00003 ConstI8 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  253. 00005 CallBuiltin listGetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  254. 00008 Store 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  255. ; wiersz 46Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  256. 00011 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  257. 00014 Store 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  258. 00017 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  259. 00020 CallBuiltin listSizeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  260. 00023 Store 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  261. 00026 ConstI8 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  262. 00028 Store 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  263. 00031 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  264. 00034 Load 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  265. 00037 CmpI LtOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  266. 00039 JmpF -> 101Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  267. 00044 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  268. 00047 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  269. 00050 CallBuiltin listGetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  270. 00053 Store 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  271. ; wiersz 47Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  272. 00056 Load 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  273. 00059 CallVirt area/0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  274. 00064 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  275. 00065 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  276. 00068 CallVirt area/0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  277. 00073 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  278. 00074 CmpI GtOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  279. 00076 JmpF -> 87Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  280. ; wiersz 48Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  281. 00081 Load 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  282. 00084 Store 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  283. 00087 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  284. 00090 ConstI8 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  285. 00092 AddIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  286. 00093 Store 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  287. 00096 Jmp -> 31Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  288. ; wiersz 51Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  289. 00101 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  290. 00104 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  291. ; wiersz 52Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  292. 00105 Trap 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  293. Pusta linia oddziela fragmenty źródła.
  294. export fn #8 Main.Start() -> String ; locals=8 maxStack=6 code=234Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  295. ; wiersz 55Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  296. 00000 NewObj 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  297. 00003 DupOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  298. 00004 ConstI8 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  299. 00006 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  300. 00007 ConstI8 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  301. 00009 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  302. 00010 Call #2 Main.Rect.$initOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  303. 00013 NewObj 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  304. 00016 DupOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  305. 00017 ConstI8 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  306. 00019 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  307. 00020 Call #4 Main.Square.$initOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  308. 00023 NewObj 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  309. 00026 DupOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  310. 00027 ConstI8 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  311. 00029 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  312. 00030 ConstI8 10Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  313. 00032 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  314. 00033 Call #2 Main.Rect.$initOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  315. 00036 NewList 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  316. 00039 Store 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  317. ; wiersz 56Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  318. 00042 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  319. 00045 Call #7 Main.largestOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  320. 00048 Store 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  321. ; wiersz 57Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  322. 00051 NewObj 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  323. 00054 DupOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  324. 00055 ConstStr #3 "pole"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  325. 00058 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  326. 00061 CallVirt area/0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  327. 00066 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  328. 00067 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  329. 00068 Call #6 Main.Pair.$initOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  330. 00071 CallVirt swap/0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  331. 00076 Store 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  332. ; wiersz 58Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  333. 00079 NewList 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  334. 00082 Store 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  335. ; wiersz 59Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  336. 00085 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  337. 00088 Store 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  338. 00091 Load 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  339. 00094 CallBuiltin listSizeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  340. 00097 Store 6Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  341. 00100 ConstI8 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  342. 00102 Store 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  343. 00105 Load 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  344. 00108 Load 6Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  345. 00111 CmpI LtOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  346. 00113 JmpF -> 178Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  347. 00118 Load 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  348. 00121 Load 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  349. 00124 CallBuiltin listGetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  350. 00127 Store 7Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  351. ; wiersz 60Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  352. 00130 Load 7Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  353. 00133 IsClass 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  354. 00136 JmpF -> 155Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  355. ; wiersz 61Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  356. 00141 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  357. 00144 ConstStr #5 "Square"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  358. 00147 CallBuiltin listAddOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  359. 00150 Jmp -> 164Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  360. ; wiersz 63Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  361. 00155 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  362. 00158 ConstStr #6 "Rect"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  363. 00161 CallBuiltin listAddOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  364. 00164 Load 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  365. 00167 ConstI8 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  366. 00169 AddIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  367. 00170 Store 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  368. 00173 Jmp -> 105Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  369. ; wiersz 66Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  370. 00178 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  371. 00181 CallVirt name/0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  372. 00186 ConstStr #8 " "Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  373. 00189 ConcatOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  374. 00190 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  375. 00193 GetFld 3 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  376. 00198 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  377. 00199 CallBuiltin toStringIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  378. 00202 ConcatOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  379. 00203 ConstStr #9 " ("Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  380. 00206 ConcatOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  381. 00207 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  382. 00210 GetFld 3 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  383. 00215 ConcatOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  384. 00216 ConstStr #10 "); typy: "Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  385. 00219 ConcatOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  386. 00220 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  387. 00223 ConstStr #11 ","Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  388. 00226 CallBuiltin listJoinOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  389. 00229 ConcatOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  390. 00230 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  391. ; wiersz 67Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  392. 00231 Trap 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  393. Pusta linia oddziela fragmenty źródła.
  394. export fn #9 Main.Shutdown() -> Unit ; locals=0 maxStack=0 code=1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  395. ; wiersz 70Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  396. 00000 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  397. Pusta linia oddziela fragmenty źródła.
  398. 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/ADVANCED_ClassesInterfacesGenerics/example.json

02_PLAYGROUND/EXAMPLES/KRETS-A01-ClassesInterfacesGenerics.json
SHA-256 E34C4A21F11781EF3D9C8CDAC197DF3CD8A6FD2F232069A9D93F2A7AA990601D

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-A01-ClassesInterfacesGenerics — Klasy, interfejsy, dziedziczenie, generyki [2.0]

KRETS-A01-ClassesInterfacesGenerics — Klasy, interfejsy, dziedziczenie, generyki [2.0]

🇬🇧 English version below.
PoleWartość
TechnologiaKretS
PoziomADVANCED
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

Interfejs, klasa z konstruktorem init, dziedziczenie z super(...) i override, klasa generyczna Pair<A, B>, funkcja generyczna z ograniczeniem T: Shape, polimorfizm przez interfejs. Kod bazuje na oficjalnym przykładzie SDK ObjectOriented.

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
  3. kret disasm . — czytelny zapis bytecode KBC 2

Oczekiwany wynik

„kwadrat 16 (pole); typy: Rect,Square,Rect” oraz listing bytecode z funkcją Start.

Najczęstszy błąd

Nadpisanie metody bez override albo próba przeciążenia funkcji (nazwy funkcji są unikalne) — błąd kompilacji.

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