KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Klasy, interfejsy, dziedziczenie, generyki [2.0]
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`.
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.
module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.Pusta linia oddziela fragmenty źródła.interface Shape {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.fn area() -> IntSygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.fn name() -> StringSygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.class Rect : Shape {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.width: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.height: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.init(width: Int, height: Int) {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.this.width = widthOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.this.height = heightOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.fn area() -> Int {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.return this.width * this.heightZwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.fn name() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.return "prostokąt"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.class Square : Rect {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.init(side: Int) {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.super(side, side)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.override fn name() -> String {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.return "kwadrat"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.class Pair<A, B> {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.first: AOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.second: BOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.init(first: A, second: B) {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.this.first = firstOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.this.second = secondOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.fn swap() -> Pair<B, A> {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.return Pair(this.second, this.first)Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.fn largest<T: Shape>(items: List<T>) -> T {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.var best = items.get(0)Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.for item in items {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.if item.area() > best.area() {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.best = itemOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.return bestZwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.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.let biggest = largest(shapes)Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.let pair = Pair("pole", biggest.area()).swap()Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.var kinds: List<String> = []Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.for s in shapes {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.if s is Square {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.kinds.add("Square")Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.} else {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kinds.add("Rect")Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.return biggest.name() + " " + toString(pair.first) + " (" + pair.second + "); typy: " + kinds.join(",")Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.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`.
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.
- check
kret check . --jsonKatalog: project · Oczekiwany kod wyjścia: 0 - run
kret run . --policy host-policy.json --data {DATA}Katalog: project · Oczekiwany kod wyjścia: 0 - disasm
kret 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.
# EXPECTED_OUTPUT — KRETS-A01-ClassesInterfacesGenericsOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# 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.# Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.### 1. check (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret check . --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."project": "<project>",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."succeeded": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "LOCAL-KPL-KSA2CLSS",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "ClassesInterfacesGenerics",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."diagnostics": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.### 2. run (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret run . --policy host-policy.json --data {DATA}Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."broker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pid": 16676,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."startupMs": 41.2346,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allowProvisionalRisk": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memoryIdle": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 1193320,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1190680,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32530432,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 10113024,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32530432,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."brokerWithPlugins": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 1540704,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1537584,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 38834176,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 13754368,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 38862848,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 187.5Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."plugins": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."package": "<project>\\Build",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."admitted": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."startMs": 141.8711,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."subject": "LOCAL-KPL-KSA2CLSS",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instance": "01a19725-c2cd-7d68-9c34-73d3b839b71f",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pid": 8304,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."jobObject": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."isolation": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."level": "Restricted",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."restrictedToken": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lowIntegrity": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."appContainer": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."limits": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."scriptMemoryBytes": 67108864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."processMemoryBytes": 201326592,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuPercent": 25,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxInstructions": 50000000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."clamped": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."calls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."operation": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "String",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."value": "kwadrat 16 (pole); typy: Rect,Square,Rect",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."brokerMs": 13.4692,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."vmMs": 7.3544,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instructions": 350,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 792992,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 790784,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32157696,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 11137024,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32526336,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 46.875Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."operation": "shutdown",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "Unit",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."value": null,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."brokerMs": 0.7775,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."vmMs": 0.0055,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instructions": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 798576,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 796344,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32280576,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 11153408,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32526336,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 46.875Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."processMemoryMeasuredByBroker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32272384,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 11153408,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32526336,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 78.125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."summary": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exitCode": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."killed": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakCommitBytes": 12046336,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."log": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."brokerAfterClose": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 584664,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1537584,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 39948288,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 14491648,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 39948288,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 187.5Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."audit": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."entries": 10,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."grantsIssued": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denied": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."exitCode": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.### 3. disasm (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret disasm .Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.module kretos.docs.krets.oop ; strings=12 records=0 imports=0 functions=10Deklaracja modułu KretS; porównaj nazwę z nazwą pliku.Pusta linia oddziela fragmenty źródła.fn #0 Main.Rect.area(Rect) -> Int64 ; locals=1 maxStack=2 code=24Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.; wiersz 16Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00000 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00003 GetFld 1 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00008 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00009 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00012 GetFld 1 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00017 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00018 MulIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00019 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00020 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 17Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00021 Trap 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.fn #1 Main.Rect.name(Rect) -> String ; locals=1 maxStack=1 code=7Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.; wiersz 19Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00000 ConstStr #0 "prostokąt"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00003 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 20Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00004 Trap 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.fn #2 Main.Rect.$init(Rect, Int64, Int64) -> Unit ; locals=5 maxStack=2 code=39Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.00000 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00003 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00004 Store 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00007 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00010 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00011 Store 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 12Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00014 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00017 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00020 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00021 SetFld 1 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 13Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00026 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00029 Load 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00032 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00033 SetFld 1 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 14Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00038 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.fn #3 Main.Square.name(Square) -> String ; locals=1 maxStack=1 code=7Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.; wiersz 28Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00000 ConstStr #1 "kwadrat"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00003 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 29Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00004 Trap 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.fn #4 Main.Square.$init(Square, Int64) -> Unit ; locals=3 maxStack=3 code=22Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.00000 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00003 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00004 Store 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 25Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00007 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00010 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00013 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00014 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00017 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00018 Call #2 Main.Rect.$initOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 26Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00021 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.fn #5 Main.Pair.swap(Pair) -> Pair<B, A> ; locals=1 maxStack=4 code=27Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.; wiersz 40Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00000 NewObj 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00003 DupOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00004 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00007 GetFld 3 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00012 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00015 GetFld 3 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00020 Call #6 Main.Pair.$initOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00023 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 41Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00024 Trap 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.fn #6 Main.Pair.$init(Pair, A, B) -> Unit ; locals=3 maxStack=2 code=23Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.; wiersz 36Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00000 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00003 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00006 SetFld 3 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 37Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00011 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00014 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00017 SetFld 3 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 38Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00022 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.fn #7 Main.largest(List<T>) -> T ; locals=6 maxStack=2 code=108Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.; wiersz 45Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00000 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00003 ConstI8 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00005 CallBuiltin listGetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00008 Store 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 46Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00011 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00014 Store 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00017 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00020 CallBuiltin listSizeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00023 Store 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00026 ConstI8 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00028 Store 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00031 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00034 Load 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00037 CmpI LtOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00039 JmpF -> 101Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00044 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00047 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00050 CallBuiltin listGetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00053 Store 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 47Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00056 Load 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00059 CallVirt area/0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00064 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00065 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00068 CallVirt area/0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00073 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00074 CmpI GtOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00076 JmpF -> 87Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 48Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00081 Load 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00084 Store 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00087 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00090 ConstI8 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00092 AddIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00093 Store 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00096 Jmp -> 31Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 51Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00101 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00104 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 52Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00105 Trap 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.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.; wiersz 55Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00000 NewObj 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00003 DupOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00004 ConstI8 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00006 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00007 ConstI8 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00009 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00010 Call #2 Main.Rect.$initOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00013 NewObj 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00016 DupOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00017 ConstI8 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00019 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00020 Call #4 Main.Square.$initOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00023 NewObj 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00026 DupOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00027 ConstI8 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00029 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00030 ConstI8 10Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00032 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00033 Call #2 Main.Rect.$initOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00036 NewList 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00039 Store 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 56Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00042 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00045 Call #7 Main.largestOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00048 Store 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 57Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00051 NewObj 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00054 DupOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00055 ConstStr #3 "pole"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00058 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00061 CallVirt area/0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00066 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00067 BoxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00068 Call #6 Main.Pair.$initOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00071 CallVirt swap/0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00076 Store 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 58Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00079 NewList 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00082 Store 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 59Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00085 Load 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00088 Store 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00091 Load 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00094 CallBuiltin listSizeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00097 Store 6Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00100 ConstI8 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00102 Store 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00105 Load 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00108 Load 6Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00111 CmpI LtOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00113 JmpF -> 178Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00118 Load 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00121 Load 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00124 CallBuiltin listGetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00127 Store 7Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 60Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00130 Load 7Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00133 IsClass 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00136 JmpF -> 155Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 61Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00141 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00144 ConstStr #5 "Square"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00147 CallBuiltin listAddOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00150 Jmp -> 164Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 63Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00155 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00158 ConstStr #6 "Rect"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00161 CallBuiltin listAddOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00164 Load 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00167 ConstI8 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00169 AddIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00170 Store 5Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00173 Jmp -> 105Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 66Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00178 Load 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00181 CallVirt name/0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00186 ConstStr #8 " "Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00189 ConcatOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00190 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00193 GetFld 3 0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00198 UnboxIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00199 CallBuiltin toStringIOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00202 ConcatOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00203 ConstStr #9 " ("Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00206 ConcatOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00207 Load 2Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00210 GetFld 3 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00215 ConcatOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00216 ConstStr #10 "); typy: "Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00219 ConcatOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00220 Load 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00223 ConstStr #11 ","Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00226 CallBuiltin listJoinOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00229 ConcatOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00230 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.; wiersz 67Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00231 Trap 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.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.; wiersz 70Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.00000 RetOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.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.
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 E34C4A21F11781EF3D9C8CDAC197DF3CD8A6FD2F232069A9D93F2A7AA990601DMateriał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.
| Pole | Wartość |
|---|---|
| Technologia | KretS |
| Poziom | ADVANCED |
| Klasyfikacja | RUNNABLE_LOCAL — Uruchamialny lokalnie (SDK, izolowany proces pluginu) |
| Playground | LOCAL_EXECUTE — lokalnie: wykonanie w KretStudio / SDK (publicznie: tylko statycznie) |
| SDK | 1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany) |
| Wynik testu | TEST_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.
kret check . --json— walidacjakret run . --policy host-policy.json --data {DATA}— uruchomieniekret 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.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →