ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 420
Obunachilar
Ma'lumot yo'q24 soatlar
+37 kunlar
-430 kunlar
Postlar arxiv
1 420
# ืืื ืืืชืื ืืื ืืืืืื ืืืืืื ืืจืืืงื ื 2023
ืืื ืืืื ืฉืจ ืขื ืืืื ืื ืฉืืฉืชื ืื ืืืืชื ืื ืืืืืืืช ืืืืื ืืช ืืืคืืคื ืื. ืืจืื ืืื ืืื ืืืืจืื ืฉืืื ืืกืจ ืืืชืื ืชืื ืืืืชืื ืชืืช ืืืื ืืืช ืืกืืืืช ืืฉืืืื ืกืคืจืื ืืืฆืื ืืช ื UI ืืืคืืืงืฆืืืช ืจืืืงื, ืืื ืืืืืื ืืืืืื. ืืืื ืขื ืชืืืื ืืืื ืืช ืืืคืืคื ืื ืื ืืืจ ืื ืืขืื ืืืืชืืจ ืืืืื ืืื ืืืชืืื ืืช ืืืฉืง ืืคืงืืืืช ืฉื ืืืคืืคื ืืืืคื ืืืงืืจืืืื ืฉื ืจืืืงื. ืืืื ื ืจืื ืืื ืื ืขืืื.
## ืคืืชืื ืืืืืื ืืืืืื ืืจืืืงื ืืืืฉื ืืืืคืจืืืืืช
ืืืืื ื
dialog ืฉื HTML ืืืื ืืืืคืชื ืืฆืืจื ืืืืืืืช ืืขืืจืช ืืคืื ืงืฆืื showModal ืฉื JavaScript. ืืื ืืืจื ืืื ืคืฉืืื ืืืฆืื ืืืืืื ืืืืืื ืืจืืืงื ืืื ืืืฆืืจ ืืืื ื ืืื, ืืฉืืืจ ืืืชื ื ref ืืืงืจืื ืืคืื ืงืฆืื ืืฉืจืืฆืื ืืืฆืื ืื ืืืกืชืืจ ืืืชื. ืื ื ืืงืื:
import { useRef } from "react";
export default function App() {
const modal = useRef(null);
const show = () => {
modal.current.showModal();
};
const hide = () => {
modal.current.close();
};
return (
<div className="App">
<p>
Hello World
<button onClick={show}>show dialog</button>
</p>
<dialog ref={modal}>
<p>Dialog Content</p>
<button onClick={hide}>Close</button>
</dialog>{" "}
</div>
);
}
## ืืคืืืช ืืื ืื ืื ืืืงืืจืืืื
ืืืขืื ืฉืืชืื ืชื ืจืืืงื ืื ืืืืืื ืืืืืืจ ืื ืงืืจื ืืฉืืืืฆืื ืขื ืืคืชืืจ. ืื ืื ื ืืขืืืคืื ืืืกืชืื ืขื ืืืืฉืื, ืืืืจ ืขื ืืกืืืื ืฉืื ืืืืฉืื ืืื ืืืืฉืง ื ืจืื ืืฉืืฉืชื ื ืืกืืืื ืืืืืื ืขืจืืื ืืกืืืืื. ืืงืื ืืืขืื ืืืื ื ืืฆืื ืืืกืชืืจ ืืช ืืืืืืื, ืืื ืื ืืจืืจ ืืื ืืกื ืืจื ืืช ืืืืืืื ืืืืืืื ืืื ืขื ืืืงืื ืืืจืื ืืืืฉืื.
ืืืจื ืืืจืืืืช ืืืืจ ืืื ืงืื ืจืืืงืื ืืงืื ืืคืืคื ืฉืืื ื ืจืืืงืื ืืื ืืคืงืืื useEffect. ืืื ืืฆืขืืื ืฉื ืืงื ืืฉืืื ืืืคืื ืืช ืืงืื ืืืงืืจืืืื:
1. ื ืืฆืื ืืช ืืืืืืื ืืงืืืคืื ื ืื ืืฉืื, ืฉืชืฆืื ืืชืื ืืืืืืื ืืช ืืืืืื ืฉืื.
2. ื ืฉืชืืฉ ื Prop ืฉื ืืงืืืคืื ื ืื ืืื ืืืืืื ืื ืฆืจืื ืืืฆืื ืื ืืืกืชืืจ ืืช ืืืืืืื.
3. ื ืขืืืจ ื Prop ืคืื ืงืฆืื ืฉืชืืงืจื ืืฉืืฉืชืืฉ ืกืืืจ ืืช ืืืืืืื.
4. ื ืคืขืื ืืช ืืงืืืคืื ื ืื ืืืืืฅ ืื ืฉืืืจ ืกืืืื ืฉืืงืืข ืื ืืืืืืื ืืืฆื ืื ืืืกืชืจ.
ืงืื? ืืจืืจ:
import { useRef, useState, useEffect } from "react";
function Modal({ children, visible, onClose }) {
const modal = useRef(null);
const show = () => {
modal.current.showModal();
};
const hide = () => {
modal.current.close();
};
useEffect(() => {
if (visible) {
show();
} else {
hide();
}
}, [visible]);
return (
<dialog ref={modal}>
{children}
<button onClick={onClose}>Close</button>
</dialog>
);
}
export default function App() {
const [showModal, setShowModal] = useState(false);
return (
<div className="App">
<p>
Hello World
<button onClick={() => setShowModal(true)}>show dialog</button>
<p>{JSON.stringify(showModal)}</p>
<p>
<label>
<input
type="checkbox"
checked={showModal}
onChange={(e) => setShowModal(e.target.value)}
/>
Show Modal
</label>
</p>
<Modal visible={showModal} onClose={() => setShowModal(false)}>
<p>Hello world</p>
</Modal>
</p>
</div>
);
}
ืืืืื ืืงืืืกื ืืืืงืก ืืืืืืื ืืืช:
https://codesandbox.io/s/busy-bassi-rfpnyt?file=/src/App.js:0-11351 420
# ืืื ืืืชืื ืืื ืืืืืื ืืืืืื ืืจืืืงื ื 2023
ืืื ืืืื ืฉืจ ืขื ืืืื ืื ืฉืืฉืชื ืื ืืืืชื ืื ืืืืืืืช ืืืืื ืืช ืืืคืืคื ืื. ืืจืื ืืื ืืื ืืืืจืื ืฉืืื ืืกืจ ืืืชืื ืชืื ืืืืชืื ืชืืช ืืืื ืืืช ืืกืืืืช ืืฉืืืื ืกืคืจืื ืืืฆืื ืืช ื UI ืืืคืืืงืฆืืืช ืจืืืงื, ืืื ืืืืืื ืืืืืื. ืืืื ืขื ืชืืืื ืืืื ืืช ืืืคืืคื ืื ืื ืืืจ ืื ืืขืื ืืืืชืืจ ืืืืื ืืื ืืืชืืื ืืช ืืืฉืง ืืคืงืืืืช ืฉื ืืืคืืคื ืืืืคื ืืืงืืจืืืื ืฉื ืจืืืงื. ืืืื ื ืจืื ืืื ืื ืขืืื.
## ืคืืชืื ืืืืืื ืืืืืื ืืจืืืงื ืืืืฉื ืืืืคืจืืืืืช
ืืืืื ื
dialog ืฉื HTML ืืืื ืืืืคืชื ืืฆืืจื ืืืืืืืช ืืขืืจืช ืืคืื ืงืฆืื showModal ืฉื JavaScript. ืืื ืืืจื ืืื ืคืฉืืื ืืืฆืื ืืืืืื ืืืืืื ืืจืืืงื ืืื ืืืฆืืจ ืืืื ื ืืื, ืืฉืืืจ ืืืชื ื ref ืืืงืจืื ืืคืื ืงืฆืื ืืฉืจืืฆืื ืืืฆืื ืื ืืืกืชืืจ ืืืชื. ืื ื ืืงืื:
import { useRef } from "react";
export default function App() {
const modal = useRef(null);
const show = () => {
modal.current.showModal();
};
const hide = () => {
modal.current.close();
};
return (
<div className="App">
<p>
Hello World
<button onClick={show}>show dialog</button>
</p>
<dialog ref={modal}>
<p>Dialog Content</p>
<button onClick={hide}>Close</button>
</dialog>{" "}
</div>
);
}
## ืืคืืืช ืืื ืื ืื ืืืงืืจืืืื
ืืืขืื ืฉืืชืื ืชื ืจืืืงื ืื ืืืืืื ืืืืืืจ ืื ืงืืจื ืืฉืืืืฆืื ืขื ืืคืชืืจ. ืื ืื ื ืืขืืืคืื ืืืกืชืื ืขื ืืืืฉืื, ืืืืจ ืขื ืืกืืืื ืฉืื ืืืืฉืื ืืื ืืืืฉืง ื ืจืื ืืฉืืฉืชื ื ืืกืืืื ืืืืืื ืขืจืืื ืืกืืืืื. ืืงืื ืืืขืื ืืืื ื ืืฆืื ืืืกืชืืจ ืืช ืืืืืืื, ืืื ืื ืืจืืจ ืืื ืืกื ืืจื ืืช ืืืืืืื ืืืืืืื ืืื ืขื ืืืงืื ืืืจืื ืืืืฉืื.
ืืืจื ืืืจืืืืช ืืืืจ ืืื ืงืื ืจืืืงืื ืืงืื ืืคืืคื ืฉืืื ื ืจืืืงืื ืืื ืืคืงืืื useEffect. ืืื ืืฆืขืืื ืฉื ืืงื ืืฉืืื ืืืคืื ืืช ืืงืื ืืืงืืจืืืื:
1. ื ืืฆืื ืืช ืืืืืืื ืืงืืืคืื ื ืื ืืฉืื, ืฉืชืฆืื ืืชืื ืืืืืืื ืืช ืืืืืื ืฉืื.
2. ื ืฉืชืืฉ ื Prop ืฉื ืืงืืืคืื ื ืื ืืื ืืืืืื ืื ืฆืจืื ืืืฆืื ืื ืืืกืชืืจ ืืช ืืืืืืื.
3. ื ืขืืืจ ื Prop ืคืื ืงืฆืื ืฉืชืืงืจื ืืฉืืฉืชืืฉ ืกืืืจ ืืช ืืืืืืื.
4. ื ืคืขืื ืืช ืืงืืืคืื ื ืื ืืืืืฅ ืื ืฉืืืจ ืกืืืื ืฉืืงืืข ืื ืืืืืืื ืืืฆื ืื ืืืกืชืจ.
ืงืื? ืืจืืจ:
import { useRef, useState, useEffect } from "react";
function Modal({ children, visible, onClose }) {
const modal = useRef(null);
const show = () => {
modal.current.showModal();
};
const hide = () => {
modal.current.close();
};
useEffect(() => {
if (visible) {
show();
} else {
hide();
}
}, [visible]);
return (
<dialog ref={modal}>
{children}
<button onClick={onClose}>Close</button>
</dialog>
);
}
export default function App() {
const [showModal, setShowModal] = useState(false);
return (
<div className="App">
<p>
Hello World
<button onClick={() => setShowModal(true)}>show dialog</button>
<p>{JSON.stringify(showModal)}</p>
<p>
<label>
<input
type="checkbox"
checked={showModal}
onChange={(e) => setShowModal(e.target.value)}
/>
Show Modal
</label>
</p>
<Modal visible={showModal} onClose={() => setShowModal(false)}>
<p>Hello world</p>
</Modal>
</p>
</div>
);
}
ืืืืื ืืงืืืกื ืืืืงืก ืืืืืืื ืืืช:
https://codesandbox.io/s/busy-bassi-rfpnyt?file=/src/App.js:0-11351 420
// val inputStream: LazyList[String] = demoInput.linesIterator.to(LazyList)
val inputStream = LazyList.from(Source.fromFile("./input.txt").getLines())
val unpackedInput: LazyList[Dir] = inputStream.flatMap(parseInput)
val headMoves: LazyList[Knot] = unpackedInput.scanLeft[Knot](Knot(0, 0))((knot, dir) => knot.move(dir))
val tailMovesPart1 = headMoves.scanLeft[Knot](Knot(0, 0))((tail, head) => tail.follow(head))
println(tailMovesPart1.toSet.size)
## ืืืง 2
ืืืืง ืืฉื ื ืืืงืฉื ืืืืืื ืืื ืขื ืืืชืจ ืงืฉืจืื - ืืืฉื 10 ืงืฉืจืื. ืืงืฉืจ ืืฉื ื ืขืืงื ืืืจื ืืจืืฉืื, ืืฉืืืฉื ืืืจื ืืฉื ื, ืืจืืืขื ืืืจื ืืฉืืืฉื ืืื ืืืื. ืืฉืืื ืืืชื ืืืื ืืืงืืืื ืืืืืืืื ืืื ืืงืฉืจ ืืืืจืื. ืืืื ืชื ืืงืื ืฉืืืจ ืืชืื ื ืืขืืจ ื 10 ืงืฉืจืื ืืื ืืกื ืืื ืชืืกืคืช ืฉื ืืืืื ืฉืืืืฆืจืช ืขืื ืจืฉืืืืช:
var tailMovesPart2: LazyList[Knot] = headMoves
for (i <- Range(1, 10)) {
tailMovesPart2 = tailMovesPart2.scanLeft[Knot](Knot(0, 0))((tail, head) => tail.follow(head))
}
println(tailMovesPart2.toSet.size)
ืกื ืืื ืืคืืชืจืื ืืกืงืืื ืื ืืฆื ืฉืื ื ืืฉืืขืืชืืช ืืคืืชืจืื ืืืื ืฉืืืืชื ืืืชื ืืฉืคื ืคืื ืงืฆืืื ืืืืช ืืืจืช ืืื ืงืืื'ืจ ืื ืืืืงืกืืจ. ืืช ืขืืงืจ ืืื ืืขืืืื ืขื ืืชืจืืื ืืืืืชื ืืืืคืฉ ืืช ืืคืื ืงืฆืืืช ืืืชืืืืืช ืืืืืื ืืช ืืชืืืืจ. ืืืืืฉืืช ืฉื ืกืงืืื ืืืคืฉืจืช ืืืืฉ ืืช ืืคืืชืจืื ืชืื ืฉืืืื ืฉื ืืชืื ืืื ืื ืขืฆืืื ืขื ืืชืื ืคืื ืงืฆืืื ืืื.1 420
# ืคืืชืจืื Advent Of Code 2022 Day 9 ืืกืงืืื
ืืกืงืืื ืืฉ ืืืกืฃ ืืจืฉืื ืฉื ืคืื ืงืฆืืืช ืืขืืืื ืขื ืจืฉืืืืช ืืืืฆืืจืช ืจืฉืืืืช ืืชืื ืจืฉืืืืช ืืืจืืช. ืืืืชื ืืคืชืืจ ืืช ืืื 9 ืฉื AoC ืืืืจืื ืืื ืืฉืืง ืขื ืืื ืืื.
## ืืชืจืืื - ืืืง 1
ืืืชืืจ ืฉื ืืื 9 ืืื ืขืืื ื ืืขืืืจ ืืฉืจ ืืืืื. ืื ื ืืืื ืืืืืืช ืฉืื ืืื ืชื ืขื ืืกืืฃ ืืช ืกืืคืืจ ืืจืงืข ืืื ืืืืื ืืฉ ืืื ืฉืืฉ ืื ืฉื ื ืงืฉืจืื, ืงืฉืจ ืืื ืงืฆื. ืื ืื ื ืืงืืืื ืืช ืืืกืืื ืฉืขืืืจ ืงืฉืจ ืืื (ื head) ืืฆืจืื ืืืืื ืืื ื ืื ืืืกืืื ืฉืืขืฉื ืืงืฉืจ ืืฉื ื. ืืืืื ืืงืฉืจ ืืฉื ื ืฆืจืื "ืืขืงืื" ืืืจื ืืงืฉืจ ืืจืืฉืื, ืื ืฉืื ืคืขื ืฉืืจืืฉืื ื ืืฆื ืืืจืืง 2 ืืฉืืฆืืช ืืืฉื ื ืืงืฉืจ ืืฉื ื ืืืื ืืฉืืฆืช ืืืช ืืืืืื ืืจืืฉืื. ืืฉ ืืืฃ ืืชืจืืื ืืื ืืืืจืื ืฉืืืืืฉืื ืืช ืืชื ืืขื ืืืืช ืืื ืืชื ืื ืืืืจืื ืืช ืืชืจืืื ืื ื ืืืืืฅ ืืืฆืืฅ ืฉื.
ืืงืื ืืืื ืืืกืืื ืฉืขืืืจ ืืงืฉืจ ืืจืืฉืื, ืืืฉืจ ืฉื ื ืืงืฉืจืื ื ืขืื ืขื ืืืฉืืจ ืื-ืืืืื ืืืืืืื ืืืื ืืืขืื, ืืืื, ืืืื ื ืืฉืืืื. ืืกืืื ื ืจืื ืื:
R 4
U 4
L 3
D 1
R 4
D 1
L 5
R 2
ืืื ืืืืจ ืฉืืงืฉืจ ืืจืืฉืื ืืืื 4 ืฆืขืืื ืืืื ื, ืืืจื ืื 4 ืฆืขืืื ืืืขืื, ืฉืืืฉื ืฆืขืืื ืฉืืืื ืืื ืขืื ืฆืขื ืืืื, ืืจืืขื ืฆืขืืื ืืืื ื, ืฆืขื ืืืื, ืืืืฉื ืฉืืืื ืืฉื ืืื ืืืื ื. ืืงืฉืจ ืืฉื ื ืขืืงื ืืคื ืืืืืืงื ืฉืชืืืจืชื ืงืืื ืืืืกืืจืช ืืจืื ืืืชืจ ืืื ืืืฃ ืืืชืืจ.
## ืืืืืฉ ืืคืื ืงืฆืืืช ืฉื ืืงืฉืจืื ืืกืงืืื
ืืฆืขื ืืจืืฉืื ืืคืืชืจืื ืืื ืืืืื ืืช ื"ืงืฉืจืื" ืืืคืขืืืืช ืฉืืื - ืืืืจื ืฉืืงืฉืจ ืืจืืฉืื ืื ืืคื ืืืืจืืืช ืืืงืฉืจ ืืฉื ื "ืขืืงื" ืืืจื ืืจืืฉืื, ืืื ืืงืฉืจ ืืฉ ืืืงืื (ืงืืืืจืืื ืืืช x ื y), ืืฉืชื ืคืื ืงืฆืืืช, ืชืืืื ืืคื ืืืจืื ืืชืืืื ืืืจื ืงืฉืจ ืืืจ. ืืืืืืฉ ืืกืงืืื ืฉื ืฉืชื ืืคืื ืงืฆืืืช ืืืื ืืืืืงืช ืืชืืืื ืืืจื ืงืฉืจ ืืืจ ืืื:
enum Dir:
case U, D, L, R
case class Knot(x: Int, y: Int) {
def move(direction: Dir): Knot =
direction match
case Dir.R => Knot(this.x + 1, this.y)
case Dir.L => Knot(this.x - 1, this.y)
case Dir.U => Knot(this.x, this.y - 1)
case Dir.D => Knot(this.x, this.y + 1)
def follow(head: Knot): Knot =
// head touches tail
if (((head.x - this.x).abs <= 1) && ((head.y - this.y).abs <= 1)) {
return this
}
var nextPosition = this;
if (nextPosition.x < head.x) {
nextPosition = nextPosition.move(Dir.R)
} else if (nextPosition.x > head.x) {
nextPosition = nextPosition.move(Dir.L)
}
if (nextPosition.y < head.y) {
nextPosition = nextPosition.move(Dir.D)
} else if (nextPosition.y > head.y) {
nextPosition = nextPosition.move(Dir.U)
}
nextPosition
}
ืื ื ืืืื ืฉืืคืฉืจ ืืืชืื ืืช ืืคืื ืงืฆืื follow ืืืชืจ ืืคื ืืืชื ืืืืื ืื ืืฉืืื ืืชืืืืืช ืืืืืฉืื ืฉืืื, ืืื ืืคืืื ืืืืืืฉ ืืืกืืจืื ืฉืื ืืื ืืกืคืืง ืืื ืคื.
## ืคืืชืจืื ืืืง 1 ืขื ืจืฉืืืืช
ืืืืจื ืื ืืืงืืื ืืคืฉืจ ืืืฉืช ืืืชืื ืืช ืืงืื ืืืขื ืืื - ืืจืฉืืืืช ืืืืจื ืกืคืืจืืฆืืืช ืขืืืื. ืื ื ืืชืืื ืขื ืืงืื ืฉืื ืจืฉืืืช ืฆืขืืื ืืกืื ืื ืฉื:
R 4
U 2
ืืืื ืฉืืงืฉืจืื ืืืื ืจืง ืฆืขื ืืื ืื ืคืขื, ืื ื ืืขืืืฃ "ืืคืชืื" ืืช ืืงืืืื ืืืืืฆืจ ืจืฉืืื ืฉื ืคืงืืืืช ืชื ืืขื, ืืืืืจ ืืืคืื ืืช ืืงืื ืืจืฉืืื ืืื:
R R R R U U
ืืกืงืืื ืื ืืืื ืขื ืืงืื ืืื:
def parseInput(input: String): LazyList[Dir] = {
val Array(name, countStr) = input.split(" ")
val count = countStr.toInt
LazyList.fill(count)(Dir.valueOf(name))
}
val inputStream = LazyList.from(Source.fromFile("./input.txt").getLines())
val unpackedInput: LazyList[Dir] = inputStream.flatMap(parseInput)
ืขืืฉืื ืืคืฉืจ ืืืฆืืจ ืจืฉืืื ืฉื ืื ืืืืงืืืื ืฉื ืืงืฉืจ ืืจืืฉืื. ืืคืื ืงืฆืื scanLeft ืฉื ืจืฉืืื ืขืฆืื ืืกืงืืื ืืงืืืช ืขืจื ืืชืืื - ืฉืื ืืืื ืืงืฉืจ ืื ืงืืื (0, 0), ืืคืื ืงืฆืื ืฉืฆืจืืื ืืงืื ืืช ืืขืจื ืื ืืืื ืืืืื ื ืืืจืฉืืื ืืืืืืืจ ืืช ืืืืื ื ืืื ืืจืฉืืืช ืืชืืฆืืืช. ืืื ืืืฉืื ืื ืืืืงืืืื ืฉื ืงืฉืจ ื head ืืืื:
val headMoves: LazyList[Knot] = unpackedInput.scanLeft[Knot](Knot(0, 0))((knot, dir) => knot.move(dir))
ืืฉืืื ืืขืงืื ืืืจื head ืื ื ืืฉืชืืฉ ืฉืื ื scan ืืื ืืคืขื ืจืฉืืืช ืืงืื ืืื headMoves ืืืคืื ืงืฆืื ืชืงืจื ื follow:
val tailMovesPart1 = headMoves.scanLeft[Knot](Knot(0, 0))((tail, head) => tail.follow(head))
ืืืกืืฃ ื ืืงื ืืช ืื ืจืฉืืืช ื tailMovesPart1 ืืชืื Set ืื ืืคืืก ืืช ืืืืื ืฉืื, ืืื ืืงืื ืืช ืืกืคืจ ืืขืจืืื ืืฉืื ืื ืืจืฉืืื. ืกื ืืื ืืคืืชืจืื ืฉื ืืืืง ืืจืืฉืื ืืื:
@main
def main(): Unit = {1 420
# ืืกืจืืื ืฉื ืืื ืื ืงืก
ืืืช ืืืืืืืืช ืืงืืจืก SQL ืืืืฉ ืฉื ืืืจืืืจื ืืื ืืฉืืืืชื ืืืื ืฉืืืฉืืช ืืืกืืก ืื ืชืื ืื ืืช ืื ืืกืจืืื ืืื ืฉืืืง ืืื ืื ืงืก:
SELECT "title" FROM "movies"
WHERE "id" IN (
SELECT "movie_id" FROM "stars"
WHERE "person_id" = (
SELECT "id" FROM "people"
WHERE "name" = 'Tom Hanks'
)
);
ืืคืฉืจ ืืืืื ืืช ืืฉืืืืชื, ืืื ืื ืืจืืจ ืืื, ืืฉืฉืืืืชื ืืงืืืื ืืืกืืก ื ืชืื ืื ืืจืคื ืืื:
MATCH (m:Movie)-[:STAR]-(p:Person{name: 'Tom Hanks'})
RETURN m.title;
ืืืชืจ ืืืฉืืืืชืืช, ืืกืืคืืจ ืคื ืืื ืขื ืืื ื ืืืื ืืืืืข. ืืฉืืืืืข ืื ืื ืืื, ืืืืืจ ืืชืืื ืืืืฉืื ืืืคืืฆ'ืจืื ืฉืื ืื ื ืจืืฆืื ืืื ืืช, ืืฉืืืืชืืช ืคืฉืืืืช ืืื ืื ื ืืืืืื ืืืชืงืื ืืืจ ืืืชืจ ืืคืืชืื. ืืื ืกืคืง ืฉืืฉืื ืืืืื ืื ืื ืืื ืืงืก ืืืื ืืื ืืงืกืื ืืืืืื ืืฉืคืจ ืืช ืืืืฆืืขืื ืืฉืืืืชืืช SQL ืืกืืืืืช, ืืื ืืืชืจ ืืฉืื ืืืืื ืืช ืืืืืข ืฉื ืืืฉืื ืืืื ืืื ื ืืืืืืืช ืฉืืืจื ื (ืื ืืืื ืกืื ืืกืืก ืื ืชืื ืื) ืืชืืื ืืืืืข ืืืืืฉืื ืฉืื ื.1 420
TCategory(this.out("belongs_to").hasLabel("category"))
}
case class TCategory[S](value: GraphTraversal[S, Vertex]) extends CustomTraversal[S, Vertex] {
def posts(): TPost[S]=
TPost(this.in("belongs_to").hasLabel("post"))
}
ืืื ืงืืืืชื ืืช ืืืืก ืืื ืคืืกื ืืงืืืืจืื ืืืืฆืขืืช ืืชืืื ืฉื ืคืืกื - ืืฉืืื ืืงืื ืืช ืืงืืืืจืื ืฉื ืืคืืกื ืืืฉืืืื ืืืืจื ืืงืฉืช belongs_to.
ืืืจื ืืืืืฉ ืืชืฉืชืืช ืื ื ืืืื ืืืชืื ืฉืืืืชืืช ืืื:
g.Post("first").categories.toList
ืืื ืืงืื ืืช ืื ืืงืืืืจืืืช ืฉื ืืคืืกื first, ืื ืืคืืื:
g.Post("first").categories.posts.toList
ืืื ืืงืื ืืช ืื ืืคืืกืืื ืฉืฉืืืืื ืืืืชื ืงืืืืจืืืช ืืื ืืคืืกื first.1 420
# ืืฆืขื ื DSL ืืฉืืืืชืืช ืขื ืืจืฃ ืืกืงืืื ืืืจืืืื
ืืคื ื ืืื ืฉืืืขืืช ืคืจืกืืชื ืืื ืืืจืื ืืขืืืื ืขื ืืกืืกื ื ืชืื ืื ืืจืคืืื ืืืืฆืขืืช ืืจืืืื ืืกืงืืื. ืืื ืืืฉืืชื ืืฉืืง ืขื ืืืื ืืืืืืืช ืืืชืืืชื ืืื ืืช ืฉืืืช ืขืืืื ืื ืืกืื ืฉืืืืชืืช ืืฉืืืืฉ ืืืืจ. ืื ื ืืคืจืกื ืืื ืืชืืจ ืืืืื, ืื ืืฉ ืคื ืื ืฉืื ืฉืืืืจืื ืกืงืืื ืื ืืจืืืื ืืืชืจ ืืื ืืื ื ืืจืืฆืื ืืฉืชืฃ ืืื ืื ืจืขืืื ืืื (ืื ืืจืืข) ืืฉืื ืืฉืืืข ืืชืืืืืช.
## ืืืขืื ืขื ืืจืืืื
ืืืืชื ืืืจืื ืืืคื ื ืืื ืฉืืืขืืช ืืจืืืชื ืงืืขื ืงืื ืฉื ืจืื ืื:
g.addV("post")
.property("slug", slug)
.property("title", title)
.property("publishedAt", LocalDateTime.parse(publishedAt, formatter))
.next()
ืืืฉืชื ื g ืืืืฆื ืืืืืจ ืืืจืฃ ืืคืื ืงืฆืืืช ืืื addV ืืืฆืขืืช ืคืขืืืืช ืขื ืืืจืฃ (ืคืื ืงืฆืืืช addV ืืืกืืคื ืฆืืืช). ืืฉืืื ืืืฉืช ืืืืชื ืคืืกื ืฉืืฆืจืชื ืื ื ืืืชื ืฉืืืืชื ืฉืื ืืฉืื ืืกืื "ืืืคืืฉ ืืืจืฃ":
g.V().has("post", "slug", "first")
ืืงืื ืืื ืขืืืื ืื ืืืืืจ ืฆืืืช ืืื ืจืง ืืืืฆื "ืืืคืืฉ ืืืจืฃ". ืืืชืืื next ืฉืื ืชืืืืจ ืืช ืืฆืืืช ืืจืืฉืื ืฉืืชืืื ืืืืคืืฉ, ืืืืชืืื toList ืชืืืืจ ืืช ืื ืืฆืืชืื ืฉืืชืืืืื ืืืืคืืฉ.
ืืืขืื ืขื ืื ืืืืคืืฉืื ืืืื ืืื ืฉืืชืืืช ืฉืืืืชืืช ืืืจืฉืช ืืืืจืืช ืขื ืืื ื ืืืจืฃ. ืื ืื ืืกืฃ ืืคืืกืืื ืืฉ ืื ืื ืงืืืืจืืืช ืืื ืคืืกื ืืืืืจ ืืงืืืืจืื ืขื ืงืฉืช belongs_to ืื ืฉืืืืชื ืืื ืชืืืืจ ืืช ืื ืืงืืืืจืืืช ืฉื ืคืืกื ืืกืืื:
g
.V()
.has("post", "slug", "first")
.out("belongs_to")
ืืฉืืืืชื ืืื ืชืืืืจ ืืช ืื ืืคืืกืืื ืฉืฉืืืืื ืืืืชื ืงืืืืจืื ืืื first:
g
.V()
.has("post", "slug", "first")
.out("belongs_to")
.in("belongs_to")
ืืืื ืื ืื ื ืืืจ ืืชืืืืื ืืจืืืช ืืช ืืืขืื - ืืื ืฉืืืืฉืื ืืื ืื ื ืฆืจืื ืืืชืื ืืช ืืืืกืื ืืื ืืฆืืชืื ืืืืืคืืื ืื ืฉืืื ืืฉืืืืชืืช ืฉืื ืืช ืืืคืืืจืืช ืืืืฉืื. ืื ืื ืื ื ืืืื ืืืชืื ืืช ืืฉืืืช ืืชืืจ ืงืืืขืื, ืฉืื ืื ืฉื ืืืืกืื, ืืืืืื ืฉื ืืืืื ืืงืฉืช ืื ืืื ืกืช ืฆืืืช ื ืืกืฃ ืืื ืคืืกื ืืงืืืืจืื, ืืืจืื ืืฉืื ืื ืจืืืื ืืืืฉืื ืืขืื ืืื ืฉืืขืจืืช ืืืืคืืกืื ืฉื ืกืงืืื ืื ืชืฆืืื ืืืืืช.
## ืคืืชืื ืฉืืืืชืืช ืืฉืืืืฉ ืืืืจ ืืืืฆืขืืช ืขืืืคืช ืืกืืืืื ืืืจืฃ
ืืื ืื ื ืขืฆืืจ ืืืชืืื ื ืฉืื ืืฉืืืืชืืช ื ืฉืื ืื ืืชืื ืืช ืืขื ืืื ืช - ืื ืืชืืื ืืืืืจื ืืืืืงื ืืกืื "ืืืคืืฉ ืืืจืฃ", ืืื ืืืคืืฉ ืืืจืฃ ืืื ืืฉืื ืฉืืคืฉืจ ืืืืฉืื ืืืชื ืขื ืืืคืืฉืื ื ืืกืคืื. ืืขืฆื ืื ืืืชืืืืช ืฉื ืืจืืืื ืื ืืืคืืฉืื ืืืจืฃ ืืฉืืืจืื ืืฉืืืืฉ ืืืืจ.
ืืฉืืื ืืืชืืื ืืช ืืจืืืื ืืืืฉืื ืฉืื, ืื ืื ืฉืื ื ืฆืจืื ืื ืืืืกืืฃ ืงืืืกืื ืฉืืชืืืืื ืืกืืื ืืฆืืชืื ืฉืื ืืืืฉืื, ืืืืืจ ืืช ืืงืืืกืื ืืืื ืืชืืจ ืืชืืืืช ืืืฉืืช ืฉื ืืืืงืช ืืืืคืืฉ ืืืจืฃ. ืืืื ื ืจืื ืืช ืื ืืงืื.
ืืืืคืืื ืืจืืฉืื ืฉืื ื ืจืืฆื ืืืืืืจ ื ืงืจื CustomTraversal ืืืื ืืืืฆื ืืืคืืฉ ืืืจืฃ ืฉืืืืืจ ืืฉืื ืืืืคืืก ืฉื ืืืืฉืื. ืืืืืจ ืื ืื ืฆืืืช, ืืื ืฆืืืช ืฉืืืืฆื ืืฉืื, ืืืฉื ืฆืืืช ืฉืืืืฆื ืคืืกื ืื ืฆืืืช ืฉืืืืฆื ืงืืืืจืื:
trait CustomTraversal[S, E] {
val value: GraphTraversal[S, E]
}
ืืืื ืชื ืืืืืงื ืืกืื ืื, ืื ื ืจืืฆื ืืืืืจ ืืืชื ืืฆืืจื ืืืืืืืืช ืืฉืื ื value ืฉืื, ืืื ืฉืืคืฉืจ ืืืื ืืืฉืชืืฉ ืื ืืืืื ืืื ืื ื ืืื GraphTraversal ืืืื ืื ื ืืืืืจ ืืืจื ืืืืืืืืช:
implicit def toValue[S, E](t: CustomTraversal[S, E]): GraphTraversal[S, E] = t.valueืืืจื ืฉืื ืื ื ืืืชื ืืคืฉืจ ืืืฉืชืืฉ ืื ืืื ืืืคืืกืื ืืืืคืืฉืื, ืืืฉื ืืจืืงืก ืฉืืืืฆื ืคืืกื ืืืื:
case class TPost[S](value: GraphTraversal[S, Vertex]) extends CustomTraversal[S, Vertex]
ืื ืืจืืงืก ืฉืืืืฆื ืงืืืืจืื:
case class TCategory[S](value: GraphTraversal[S, Vertex]) extends CustomTraversal[S, Vertex]
ืืื ืืคืฉืจ ืืืจืืื ืืช ืืืจืฃ ืืื ืฉืืืื ืืืืืืจ ืคืืกื ืื ืงืืืืจืื:
extension (g: GraphTraversalSource)
def Post(slug: String): TPost[Vertex] =
TPost(value = g.V().has("post", "slug", slug))
def Category(name: String): TCategory[Vertex]=
TCategory(value = g.V().has("category", "name", name))
ืืื ืืืจ ืขืืื, ืืืืืจ ืื ื ืืืื ืืืชืื:
g.Post("first").next()
ืืื ืืงืื ืืช ืืืจืืงืก ืฉืืชืืื ืืคืืกื ืฉื ืงืจื first. ืืื ืื ืื ืืกืืฃ. ื ืืืืจ ืฉืืืชืืจ ืืื ืืงืืื ืืฆืืจื ืืืืื ืืืชืืืื ืืฉืืืืฉ ืืืืจ ืืช ืืืืก ืืื ืคืืกืืื ืืงืืืืจืืืช, ืืื ืื ื ืืจืืื ืืช ืืงืืืกืื ืืืืชืืืื ืฉืืชืืชื ืงืืื:
case class TPost[S](value: GraphTraversal[S, Vertex]) extends CustomTraversal[S, Vertex] {
def categories(): TCategory[S]=1 420
# ืืืื ืืื ืืืช ืืคืฉืจ ืืงืฆืจ ืืื ืื?
ืืืื ืืขื ืืื ืืจืืื ืืชืืื ืืคืืกื ืืื ืขื ืืืืชืจืช "ืื ืกืืช ืืืืจ ืขื ืืชืื ืชืื ืืื ืืงืฆืจ ืืื ื ืคืืชืื ืื ืืื ืืืืจ ืขื ืืืืื ืืื ืืฉืคืจ ืืช ืืื ืืืืืืจ". ืื ื ืืืื ืืช ืืื ืืืืืื ืืืฉ ืื ืืจืื ืืืช. ืืื ืื ืื ืกืืฃ ืืกืืคืืจ.
ืืื ืืืืื, ืื ืื ืื ื (ืืคืขืืื) ืืืืขืื ืืืขืจืื ืืื ืืื ืืืงื ืืืชืื ืงืื ืืืืืืฉ ืื ืื ืื ืืกืืื. ืืืื ืืืืื ืื ืื ื ืืื ืืจืื ืื ืืขืฉืืช ืื ืืืข ืืืื ืฉืื ืืืงื. ืืืืชื ืฉืื ืืืฉืื ืื ืืืชืื ืงืื ืืืจ ืืืชืจ, ืืื ืื ืืกืืื ืขืืจ ืื ืืืื ืฉืืืงื ืื ืืืฉืื ืืืคืชืืจ ืืขืืืช ืืืกืื ืืื. ืื ืืืื ืฉืื ืกื ืืฉืื ืข ืืืชื ืืคืชืืจ ืืช ืืืขืื ืืืชืจ ืืืจ ืืืืืื ืืืืืช ืืื ืืฉืื ืขืื ืืขืืื, ืืื ืืจืื ืืืชืื ืชืื ืฉืื ื ืืืืจ ืื ืืกืจ ืฉืื ืืข ืืื ืืกืจื ืืืืืืฆืื.
ืืฉืืื ืืงืฆืจ ืืื ื ืคืืชืื ืืืื ืืืชืืืื ืขื ืืืชืืจืื ืืืืืชืืื ืฉื ืืืคืชืืื. ืืจืื ืืื ืืืื:
1. ืขืืืื ืขื ืืขืืืช ืืืฉืืช ืืื ืืกืคืืง ืืืข ืขื ืืืขืื ืื ืขื ืืืืื. ืืื ืืชืื ืชื ื PHP ืฉืขืืฉืื ืฆืจืืืื ืืืชืื ืืคืืืงืฆืืืช Front End ืืจืืืงื. ืืฉืืื ืืืฉ ืืืชืงืืืืช ืืืืืช ืืืชืจ ืืืจืื ืคืขืืื ืืืืืื ืืื ื ืืื.
2. ืขืืืื ืขื ืืืฆืจ ืฉืืืืคืืื ืฉืื ืื ืืกืคืืง ืืื, ืื ืฉืื ืืืจืกื ืฉืืืจืช ืื ืืืช ืืกืื ืืืืชืืืช ืืืืจืกืืืช ืงืืืืืช.
3. ืขืืืื ืขื ืคืืฆ'ืจืื ืืืืืื ืืื ืขืืืจ ืืืืฆืจ ืืืฆืื ืื ืืืื (ืืื ืืจืืจ ืื ืฉืื ืืื ืืืืฆืจ ืฉืืืคืืื ืื ืืช ืืคืืฆ'ืจืื ืื ืืจืืืฉืื ืฉืืื ืคืืฆ'ืจืื ืืืืืื ืืื).
4. ืืืืื ืจืืืช ืืฉืืขืืชืืื ืืื ืืืชืื ืชืื ืืฆืืืช, ืฉืืืฆืจืื ืขืืืก ืขื ืืืง ืืืฆืืืช ืืชืืคืขื ืฉื "ืฆืืืืจ ืืงืืืง".
ืืืงืื ืืืืื ืืื ืขื ืืืืืืืื ืื ืืืื ืืืืื ืฆืจืืืื ืืืืื ืืช ืืฆืืืช ืืืช ืืืกืืื ืืืืืชืืื ืฉืืืืื ืืช ืืขืืืื ืืืืฉืงืืข ืืช ืืืื ืืืกืจืช ืื ืฆืืฆืื ืืืชื ืืกืืื.
1 420
# ืืืืื ืื ืืื ืืจื
ืืืืื ืืื ืืจื ืื ืื ืฉืงืืจื ืืืืชื - ืื ืืจืืช ืืฉืืขืืจ ืืื ืืจืืช ืืฉื ื. ืืืืื ืืื ืืจื ืื ืืฉืืช ืืืืงืฉืื ืืืกืืื ืฉืืืฉืื ืืืจ ืื ื ืืฉืืืื, ืืคืชืืจ ืืื ืฉืื ืืช ืืชืจืืืืื ืฉืืืืื ืืืชื ืืช ืืืืืื ืืช ืฉื ืืืชื ืฉืื ืืืชืืฉืื ืืืฆืืื ืืืืจ ืืช ืื ืื ืงืืืืช ืืื ืืื ืืช ืืืฆืจ.
ืืืืืื ืืื ืืจื ืื ืฆืจืื ืืืฉืื ืื ืืืืจ ืืื ืฉืฆืจืื ืืขืฉืืช. ืืกืคืืง ืืืืื ืก ืืืืชื ืื ืืืืืฅ Play ืขื ืืืืืื ืืื. ืื ืืื ืคืขืจื ืืืข (ืืคืืืช ืืชืืืืจืื). ืื ืกืืืืช ืฉืื ืงืืืืช ืื ืืช ืื ืืืืืื ืืช ืฉื ืืืชื ืืฉืื ืืจื ืืงืฉืื ืืฉืืขืืจ ืืคืืชืจืื ืชืจืืืืื. ืืืคืืื ืื ืื ืืืื ืื ืืฉืื, ืื ืื ืฉืฆืจืื ืืขืฉืืช ืื ืืืคืืฃ ืืืืจื ืืกืคืจ ืื ืืฆืคืืช ืืกืจืื ืืืืื ืงืืืืื ืฉืื ืืื ืืืืง ืืช ืืืกืืืืช ืืื ืืคืฉืจ ืืืื ืืืืฉืื.
ืื ืืืจืื ืฉืืื ืื ืฉืืขืืจืื ืืฆืืจื ืืื ืืจืืช ืืืื ืฉืืืืื ืฉืืื ืื ืืืื ืืกืืืืื. ื ืืื ืฆืจืื ืืฉืืืจ ืืช ืืจืืฉ ืืืืืืจ ืื ืืืื ืืืืืื ืกืืจ, ืืื ืืืจื ืืกืคืืง ืคืขืืื ืฉืชืืืื ืืฉืื ืืชื ืชืืื ืฉืืคืฉืจ ืืขืฉืืช ืืืคืืืืืืฆืื ืืืืืืช ืืืืืื ืืืคืฉืจ ืืื ืืช ืืกืืื ืืื ืืจื ืฉืืืืจ ืืื ืฉืื.
ืื ืืืคื ืืื ืืืช ืืืขืื? ืฉื ื ืืชืืจืื-
1. ืืจืืฉืื ืืื ืฉืื ืื ื ืื ืืืืืื ืื. ืืืื ืงืฉื ืืื ื ืืื ืืืืื ืืฉืื ืืืืฆืขืืช "ืื ืื ืืืืื" ืฉื ืฉืืืืช ืืื ืฉืืื ืื ืื ืืื. ืืืืืื ืืื ืืฉื ืืื ืกืคืืจืืื, ืืื ืคืขื ืฉืื ืื ื ืืืืื ืคืืกืืช ืืืืข ืืืฉืืช ืื ืื ื ืืืืจืื ืืช ืืืืข ืืืืฉ ืืืืจืื ืฉืื ืื ื ืืืืขืื, ืืืจื ืืืืข ืืืืฉ ืืืืื ืืืจืื ืืืฉืื ืขื ืืฉืืืืช ืฉืืืืืื ืืืื ื. ืคื ืืืชืจ ืื ื ืคืืืฉ ืื ืืขื ืื ืฉืื ืฉืืกืืืืื ืงืืจืก ืืืืื ืืืืจื ืืื ืืืืฉืื ืฉื ืขืืืื ืื ืืกืืื ืืืืจืื ืืฆืคืืช ืื ืคืขื ื ืืกืคืช ืืืืืื ืืืจืื ืืืฉืื ืืืืจื.
2. ืืืืชืืจ ืืฉื ื ืืื ืฉืืืฆืืืืช ืื ืื ืืื ืืฆืืจื ืืื ืืจืืช. ืืฉ ืคืฉืื ืืืชืจ ืืื ืืืืจ, ืืืชืจ ืืื ืืืจืื ืืืืื ืืื ื ืืกืืื ืืืืื ืืช ืืื ืืืืชืืื ืืฆืืจื ืืกืืืจืช ืืืื ืืืื ืขื ื ืืฉืืื ืืฉืืืื ืจืง ืืฉืืื ืืืืืข ืืืืืืฉืื ืืืืื ืืช ืืขืืช ืขืจื.
ืื ืืชื ืจืืฆืื ืืฉืคืจ ืืช ืืคืงืืืืืืช ืืืืืื ืฉืืื, ื ืกื ืืืืืืฃ ืืช ืืืืืื ืืืื ืืจื ืืืืืื ืกืคืืจืืื, ืืืืืจ ืืชืืืื ืืืืืื ืืืืจ ืืืฉ ืืจื ืืคืืืฃ ืืืื ืืืืืืืช, ืืืืจ ืืื ืื ื ืืื ืืืจืื ืงืื ืื (ืืื ืฉืืชื ืืฆืืืืื) ืขื ืื ืฉืืืืชื ืืื ืืืจื ืืกืืืื ื ืืกืฃ ืื ืชืชืขืืงื ืืืืชื ืืืืืืืช ืขืืืื ืขืืจืชื ืืืืฃ ืืืช ืืชืืืืจืื ืืืืืจืืื. ืืขืืจืช ืืืืข ืืืืฉ ืชืืืื ืืฉืคืจ ืืช ืืงืื ืฉืืชืืชื ืืื ืืืฉืืื ืืกืืืื, ืืืื ืืจืืื ืฉื ืืืืค ืืื ืคืขื ืืื ืืืืืจ ืืืืืืืช ืืืฉืืช ืืืื ืืงืืช ืืืฉืืช ืืฉืืืืฉ ืืืืชื ืืื ืืืืืื.
1 420
# ืืคืืกื ืฉืื ืืชืืชื
ืืคืืกื ืฉืื ืืชืืชื ืืื ืืืืจ ืืกืคืจ ืขื ืืขืื ืืืฉ ืืชืืืืืช. ืื ืื ืืกืืืืช ืฉืืืื ืืืช ืืคืืื ืื ืืื ืชื ืืืชื ืขื ืืกืืฃ. ืืืืืื ืขื ืืคืืชืจืื ืืกืืคืจ ืืชืืืื ืฉืื, ืฉืืืชืืื ืื ืขืื ืืจืง ืืืจื ืืื ื ืืกืืื ืืช ืืฆืืืชื ืืืืืข ืื ืืกืื ืฉืืืืืง ืคืชืจื ืืช ืืืขืื.
ืืคืืกื ืฉืื ืืชืืชื ืืื ืืืืจ ืืกืคืจ ืืื ืขื ืืืืจื ืืืืืชื ืืืขืื ืืืืช, ืืืช ืื ืืืจื ืฉืขืฉืืชื ืืื ืืืืืช ืืืชื. ืืื ืืืจืืืช ืืช ืื ืืคืืชืจืื ืืช ืฉืื ืขืืื ืืืืกืืืจ ืื ืืื ืืืขืืืช ืฉืืื, ืืืื ืืคืืชืจืื ืฉืขืื (ืืคืืื ืฉืืื ืืืื ืืกืืื) ืงืืข ืืื ืืฅ ืืืืจื ืืืืืืง ืคืชืจ ืืช ืืืื.
ืืืขืื ืขื ืืคืืกื ืฉืื ืืชืืชื ืืืชื ืฉืชืื ืืื ืืืคืืฉ ืื ืืืกืืจืื ืืืื ืคืชืืื ืืื ืชื ืฉืืืขืื ืืืชื ืืจืื ืืืชืจ ืคืฉืืื ืืื ืฉืืฉืืชื ืืืชืืื. ืื ืื ืคืฉืืื ืฉืืื ืืคืืื ืื ืืืชืื ืขืืื. ืืืคืืชืจืื ืืกืืคืจ ืืกืืื ืฉืืงื ืื ืฉืขืืช ืืืชืื? ืืื ืืชืืื ื Workaround ืืคืฉื ืฉืืคืืื ืื ืืืคื ืืื ืืืงืจืื. ืืืืงืจ ืืงืจืืช ืืคืืกื ืฉืื ืืชืืชื ืืืื ืืช ืื ืืงืื ืืืกืืื ืืื ืืืื ืงืืคืื, ืืืฉืืืจ ืืืชื ืืื ืคืืกื ืืื ืขื ืงืื ืคืฉืื ืฉืขืืื ืืจืื ืืืชืจ ืืื.
ืืคืืกื ืฉืื ืืชืืชื ืืืืืจ ืื ืฉืืืชืืื ืขื ืงืื ืืืจืืืช ืืืืืง ืืื ืืชืืืช ืืงืื.
1 420
# ืื Java, ืืืจืืืช ืืืืืื ืจืืืืืจื ืื ืฉื ื ืืืจืื ืฉืื ืื
ื Java ืืฉ API ืืขืืืื ืขื ืืืืืืื ืจืืืืืจืืื ืืจื ืืืืืื java.util.Pattern. ืขื ืืืืืื ืืืืช ืืคืฉืจ ืืืชืื ืืืจืื ืืื:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
ืื ืืคืืื ืืืฉืชืืฉ ืืคืื ืงืฆืืืช ืืกืืืืืช ืืืืชืื:
boolean b = Pattern.matches("a*b", "aaaaab");
ืืืืื ืจืืื ืืืื ื ืขืืฆืจืื ืคื ืืช ืืฉืืื ืขื ืืืืืืื ืจืืืืืจืืื ืืืืืจืื ืืืืจ ืขื ืงืื. ืืื ืขื Java ืฉืื ืืื ืืื ื ืืื ืจืืื.
ืืืืฅ ืืืืืืช ืืืืืืืื ืืจืืืืืจืืื ืืฉ ืืืืื ืฉื ืืืจืืืืช ืืื ืืคืื ืงืฆืื split:
public String[] split(String regex)
ืืื ืฉื ืืคืจืืืจ ื ืืืจ ืืืืื ื - ื'ืืืื ืืชืืืก ืืืืจืืืช ืืืคืจืื ื split ืืื ืืืืื ืจืืืืืจื. ืงืื? ืืื. ืื ื ืฉืชื ืืืืืืืช:
import java.util.Arrays;
class Main {
public static void main(String[] args) {
// prints: [hello, world]
System.out.println(Arrays.toString("hello-world".split("-")));
// prints: []
System.out.println(Arrays.toString("hello.world".split(".")));
}
}
ืืฉืืจื ืืจืืฉืื ื ืืืคืืกื ืืขืจื ืขื ืฉื ื ืืืืจืื, ืืจืืฉืื ืืื ืืืืื hello ืืืฉื ื ืืืืื world. ืืฉืืจื ืืฉื ืื ืืืืืจื ืืขืจื ืจืืง, ืื ื ืงืืื ืืื ืืืืื ืจืืืืืจื ืฉืืชืืื ืืื ืชื, ืืืื ืื ืชื ืืื ืชื ืืคืจืื ืืืื ืื ื ืฉืืจื ืืืจืื ืืืืชืืื (ืืืคืจืืื) ืืฉืื ืืืขืจื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
