uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 420
Obunachilar
+124 soatlar
+17 kunlar
-430 kunlar
Postlar arxiv
ToCode
1 420
ืžื“ืจื™ืš Next.JS - ืคืจืง 1 ื”ืชืงื ื” ื•ืคืจื•ื™ืงื˜ ืจืืฉื•ืŸ ื”ืฉื‘ื•ืข ื”ื‘ืœื•ื’ ื™ืฆื ืœืคื’ืจื” ืื‘ืœ ื›ื“ื™ ืœื ืœื”ืฉืื™ืจ ืืช ืชื™ื‘ืช ื”ืžื™ื™ืœ ืฉืœื›ื ืจื™ืงื” ืžื“ื™ ืืฉืœื— ื‘ืžื”ืœืš ื”ืชืงื•ืคื” ืžื“ืจื™ืš next.js ืฉื›ืชื‘ืชื™ ืžืจืืฉ. ืžืงื•ื•ื” ืฉืชืžืฆืื• ืื•ืชื• ืžื•ืขื™ืœ ื•ื ื—ื–ื•ืจ ืื—ืจื™ ื—ื ื•ื›ื” ื‘ื›ื•ื—ื•ืช ืžื—ื•ื“ืฉื™ื. ืžื”ื• Next.JS ื ืงืกื˜ ื’'ื™ื™ ืืก ื”ื•ื ืกื‘ื™ื‘ื” ืœืคื™ืชื•ื— ื™ื™ืฉื•ืžื™ Full Stack ืžื‘ื•ืกืกืช ืจื™ืืงื˜, ื”ืžืืคืฉืจืช ืœื ื• ื‘ืคืจื•ื™ืงื˜ ืื—ื“ ืœื›ืชื•ื‘ ื’ื ืืช ืงื•ื“ ืฆื“ ื”ืฉืจืช ื•ื’ื ืืช ืงื•ื“ ืฆื“ ื”ืœืงื•ื—. ื”ื“ื’ืฉ ืฉืœ ื”ืคืจื™ื™ืžื•ื•ืจืง ื”ื•ื ืขืœ ืงืœื•ืช ื‘ื ื™ื™ืช ืคืจื•ื™ืงื˜ ื•ืื™ื ื˜ื’ืจืฆื™ื” ื—ื–ืงื” ื‘ื™ืŸ ืงื•ื“ ืฆื“ ืฉืจืช ืœืงื•ื“ ืฆื“ ืœืงื•ื—, ืžื” ืฉื”ื•ืคืš ืื•ืชื• ืœื‘ื—ื™ืจื” ืžืื•ื“ ืงืœื” ืœืคืจื•ื™ืงื˜ื™ ืจื™ืืงื˜ ื—ื“ืฉื™ื. ื™ื•ืชืจ ืžื–ื”, next.js ื ื•ืฆืจ ืขืœ ื™ื“ื™ ื—ื‘ืจืช vercel ื•ื™ืฉ ืœื• ื›ืœื™ ืื•ื˜ื•ืžื˜ื™ ืœ deployment ืขืœ ื”ืขื ืŸ ืฉืœื”ื, ื›ืš ืฉืืคืฉืจ ืœื”ื‘ื™ื ืืช ื”ืคืจื•ื™ืงื˜ ืžืžื›ื•ื ืช ื”ืคื™ืชื•ื— ืœืื™ื ื˜ืจื ื˜ ื‘ื›ืžื” ื“ืงื•ืช. ืคืจื•ื™ืงื˜ ืจืืฉื•ืŸ ื‘ืฉื‘ื™ืœ ืœื™ืฆื•ืจ ืคืจื•ื™ืงื˜ next.js ืจืืฉื•ืŸ ืื ื™ ืฆืจื™ืš ืจืง ืœื”ืชืงื™ืŸ ืืช node.js ื•ืื– ืœื”ืคืขื™ืœ ืืช ื”ืคืงื•ื“ื”:
npx create-next-app@latest 01-intro
ื•ืœืขื ื•ืช ืขืœ ืžืกืคืจ ืฉืืœื•ืช (ืื ื™ ื‘ื—ืจืชื™ ื‘ื›ื•ืœืŸ ืืช ื‘ืจื™ืจื•ืช ื”ืžื—ื“ืœ). ื–ื” ืžืฉืžืขื•ืชื™ืช ื™ื•ืชืจ ืžื”ื™ืจ ื•ืงืœ ืžืœื”ืงื™ื ืงื•ื ืคื™ื’ื•ืจืฆื™ื™ืช ื•ื•ื‘ืคืืง ื‘ืขืฆืžื ื• ื•ื–ื” ืืคื™ืœื• ื™ื•ืชืจ ืงืœ ืžื™ืฆื™ืจืช ืคืจื•ื™ืงื˜ ืขื vite. ืื—ืจื™ ื™ืฆื™ืจืช ื”ืคืจื•ื™ืงื˜ ืืคืฉืจ ืœืคืชื•ื— ืฉืจืช ืœืคื™ืชื•ื— ืžืงื•ืžื™ ืขืœ ื™ื“ื™:
cd 01-intro
npm run dev
ืคืชื™ื—ืช ื”ืคืจื•ื™ืงื˜ ืฉื ื•ืฆืจ ื‘ืกื‘ื™ื‘ืช ืคื™ืชื•ื— ืชืจืื” ืœื ื• ืฉื™ืฉ ื‘ืกืš ื”ื›ืœ ืฉื ื™ ืงื‘ืฆื™ื ืžืขื ื™ื™ื ื™ื ื‘ื™ื ืชื™ื™ื ื‘ืชื™ืงื™ื™ืช app, ื”ืจืืฉื•ืŸ ื ืงืจื layout.tsx ื•ื”ืฉื ื™ ื ืงืจื page.tsx. ื‘ layout ืื ื™ ืžื•ืฆื ืืช ื”ืงื•ื“ ื”ื‘ื:
import type { Metadata } from 'next'
import { Inter } from 'next/font/google'
import './globals.css'

const inter = Inter({ subsets: ['latin'] })

export const metadata: Metadata = {
  title: 'Create Next App',
  description: 'Generated by create next app',
}

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en">
      <body className={inter.className}>{children}</body>
    </html>
  )
}
ื•ื‘ page.tsx ืืช ื”ืงื•ื“ ื”ื‘ื:
import Image from 'next/image'

export default function Home() {
  return (
    <main className="flex min-h-screen flex-col items-center justify-between p-24">
      <div className="z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex">
        <p className="fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto  lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30">
          Get started by editing&nbsp;
          <code className="font-mono font-bold">src/app/page.tsx</code>
        </p>
        <div className="fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none">
          <a
            className="pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0"
            href="https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
            target="_blank"
            rel="noopener noreferrer"
          >
            By{' '}
            <Image
              src="/vercel.svg"
              alt="Vercel Logo"
              className="dark:invert"
              width={100}
              height={24}
              priority
            />
          </a>
        </div>
      </div>

      <div className="relative flex place-items-center before:absolute before:h-[300px] before:w-[480px] before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-[240px] after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700 before:dark:opacity-10 after:dark:from-sky-900 after:dark:via-[#0141ff] after:dark:opacity-40 before:lg:h-[360px] z-[-1]">
        <Image
          className="relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert"

ToCode
1 420
ื—ื™ื“ืช ื’ืจืžืœื™ืŸ - Coalesce ื”ืงื•ื“ ื”ื‘ื ื”ื™ื” ืืžื•ืจ ืœื‘ื“ื•ืง ืื ืงื™ื™ื ื•ืจืงื˜ืงืก ืขื ื”ืขืจืš bob ื‘ืžืืคื™ื™ืŸ name, ื•ืื ืœื ืงื™ื™ื ืœื™ืฆื•ืจ ื—ื“ืฉ, ืื‘ืœ ื”ื•ื ืœื ืขื•ืฉื” ื‘ื“ื™ื•ืง ืืช ืžื” ืฉืจืฆื™ื ื•. ืžื” ืขื•ืฉื” ื”ืงื•ื“, ืžื” ื”ื‘ืขื™ื” ื•ืื™ืš ื ืชืงืŸ ืื•ืชื•?
g
  .V()
  .coalesce(
    __.has('person', 'name', 'bob'),
    __.addV('person').property('name', 'bob')
  )
  .iterate()
ื”ื‘ืขื™ื” ื‘ืงื•ื“ ื”ืคืงื•ื“ื” coalesce ืฉืœ ื’ืจืžืœื™ืŸ ืžืงื‘ืœืช ืžืกืคืจ ืืคืฉืจื•ื™ื•ืช ืœื”ืชืงื“ืžื•ืช ื‘ื’ืจืฃ ื•ืžื‘ืฆืขืช ืื•ืชืŸ ืœืคื™ ื”ืกื“ืจ ืขื“ ืฉืžื’ื™ืขื” ืœืืคืฉืจื•ืช ืฉืžื—ื–ื™ืจื” ืฆื•ืžืช ืชืงื™ืŸ. ืœื›ืŸ ืœื›ืื•ืจื” ื”ืงื•ื“ ื”ื™ื” ืืžื•ืจ ืœื”ืชื—ื™ืœ ืžื›ืœ ื”ืฆืžืชื™ื ื‘ื’ืจืฃ, ืœืžืฆื•ื ืฆื•ืžืช ืฉื™ืฉ ืœื• ืืช ื”ืžืืคื™ื™ืŸ name ืขื ื”ืขืจืš bob, ืื ืงื™ื™ื ืœื”ื—ื–ื™ืจ ืื•ืชื• ื•ืื ืœื ืงื™ื™ื ืœื”ื’ื™ืข ืœ addV. ืื‘ืœ ืœื ื›ื›ื” ื–ื” ืขื•ื‘ื“. ื”ื‘ืขื™ื” ื‘ืงื•ื“ ื”ื™ื ืฉ coalesce ืžื•ืคื™ืข ืื—ืจื™ V() ื•ืœื›ืŸ ื”ื•ื ื™ื•ืคืขืœ ืขืœ ื›ืœ ื”ืฆืžืชื™ื ื‘ื’ืจืฃ, ื›ืœื•ืžืจ ืœื›ืœ ืฆื•ืžืช ื ื‘ื“ื•ืง ื‘ื ืคืจื“ ืื ื”ื•ื ืžืชืื™ื ืœ has ื•ืื ืœื ื ื ืกื” ืœื”ื•ืกื™ืฃ ืฆื•ืžืช ื›ื–ื” ืขื addV, ืžื” ืฉื™ื’ืจื•ื ืœื”ื•ืกืคื” ืฉืœ ื”ืžื•ืŸ ืฆืžืชื™ื. ื“ื•ื’ืžืช ื”ืจืฆื” ื‘ืกืงืืœื” ืขื ื”ืงื•ื“ ื”ื–ื”:
@main def main() =
  val graph = TinkerGraph.open
  val g = traversal.withEmbedded(graph)

  println(g.addV("person").property("name", "a").next())
  println(g.addV("person").property("name", "b").next())

  println("--- 1")
  println(g.V().elementMap().toList)

  g.V()
    .coalesce(
      has("person", "name", "bob"),
      addV("person").property("name", "bob"))
    .iterate()

  println("--- 2")
  println(g.V().elementMap().toList)
ืžื“ืคื™ืกื” ืืช ื”ืคืœื˜:
--- 1
[{id=0, label=person, name=a}, {id=2, label=person, name=b}]
--- 2
[{id=0, label=person, name=a}, {id=2, label=person, name=b}, {id=4, label=person, name=bob}, {id=6, label=person, name=bob}]
ื›ืœื•ืžืจ ื ื•ืฆืจื• ืฉื ื™ ืฆืžืชื™ื ื—ื“ืฉื™ื ืขื ื”ืฉื bob. ืคื™ืชืจื•ืŸ ื‘ืขื–ืจืช fold ืื™ืš ืžืชืงื ื™ื? ื”ื›ื™ ืคืฉื•ื˜ ื–ื” ืงื•ื“ื ืœื—ืคืฉ ืืช ื”ืฆื•ืžืช ื•ืื– ืขืœื™ื• ืœื”ืคืขื™ืœ ืืช coalesce. ื”ื‘ืขื™ื” ื”ื™ื ืฉื ื™ืกื™ื•ืŸ ื›ื–ื” ืขืœื•ืœ ืœื”ื™ื›ืฉืœ ืื ื”ืฆื•ืžืช ืœื ืงื™ื™ื ื•ืœืขืฆื•ืจ ืืช ื›ืœ ื”ืฉืื™ืœืชื”. ืœื›ืŸ ื™ืฉ ืœื”ื•ืกื™ืฃ ืฆืขื“ fold ืฉืื•ืกืฃ ืืช ื›ืœ ื”ืฆืžืชื™ื ื”ืžืชืื™ืžื™ื ืœืจืฉื™ืžื” ื•ืœืคืชื•ื— ืืช ืื•ืชื” ืจืฉื™ืžื” ื‘ืชื•ืš ื” coalesce. ืื• ื‘ืงื™ืฆื•ืจ ื‘ืงื•ื“:
@main def main() =
  val graph = TinkerGraph.open
  val g = traversal.withEmbedded(graph)

  println(g.addV("person").property("name", "a").next())
  println(g.addV("person").property("name", "b").next())

  println("--- 1")
  println(g.V().elementMap().toList)

  g.V()
    .has("person", "name", "bob")
    .fold()
    .coalesce(
      unfold(),
      addV("person").property("name", "bob"))
    .iterate()

  println("--- 2")
  println(g.V().elementMap().toList)
ืžื” ืฉื™ื•ืฆืจ ืจืง ืฆื•ืžืช ืื—ื“ ืขื ื”ืฉื bob. ืคื™ืชืจื•ืŸ ื‘ืขื–ืจืช merge ื‘ื’ื™ืจืกืื•ืช ืžืกืคื™ืง ื—ื“ืฉื•ืช ืฉืœ ื˜ื™ื ืงืจืคื•ืค ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ merge ื›ื“ื™ ืœื—ืกื•ืš ืืช ื›ืœ ื”ื‘ืœืื’ืŸ ื”ื–ื” ื›ืฉืื ื—ื ื• ืžื ืกื™ื ืœืžื–ื’ ืฆื•ืžืช ืœืคื™ ืžืืคื™ื™ืŸ ื›ืžื• name. ื”ืงื•ื“ ื ืจืื” ื›ื›ื”:
  g.mergeV(Map[Object, Object](
    T.label -> "person",
    "name" -> "bob"
  ).asJava)
  .iterate()
ื›ืœ ืขื•ื“ ื”ืžื™ื–ื•ื’ ื”ื•ื ืœืคื™ ืžืืคื™ื™ื ื™ื ืฉืื ื—ื ื• ืžื›ื™ืจื™ื ื–ื” ื™ื”ื™ื” ื”ืคื™ืชืจื•ืŸ ื”ื›ื™ ื˜ื•ื‘. ื›ืฉืฆืจื™ืš ืœืžื–ื’ ืœืคื™ ื™ื—ืกื™ื ืœืฆืžืชื™ื ืื—ืจื™ื (ืœื“ื•ื’ืžื” ืื ืงื™ื™ื ืฆื•ืžืช person ืฉื”ื•ื friend ืฉืœ bob) ืื– ื ืฆื˜ืจืš ืœื—ื–ื•ืจ ืœื˜ืจื™ืง ืฉืœ ื” coalesce ื•ื” fold.

ToCode
1 420
ืชื™ืงื•ื ื™ื ืงืœื™ื, ืชื™ืงื•ื ื™ื ืงืฉื™ื ื•ื‘ื“ื™ืงื•ืช ื‘ืคืจื•ื™ืงื˜ Node.JS ืฉืขื‘ื“ืชื™ ืขืœื™ื• ืžืฆืืชื™ ืืช ื”ืฉื•ืจื” ื”ื–ืืช:
const [host, port] = address.split(':');
ื•ื”ืžืฉื™ืžื” ื”ื™ืชื” ืœื”ื•ืกื™ืฃ ืคื•ืจื˜ ื‘ืจื™ืจืช ืžื—ื“ืœ, ื›ืš ืฉืื ื”ื›ืชื•ื‘ืช ืœื ืžืกืชื™ื™ืžืช ื‘ื ืงื•ื“ื•ืชื™ื™ื ื•ืžืกืคืจ ื ืฉืชืžืฉ ื‘ื‘ืจื™ืจืช ื”ืžื—ื“ืœ 8080. ื”ืชื™ืงื•ืŸ ื”ืงืœ ื”ื•ื ื‘ืกืš ื”ื›ืœ:
const [host, port = '8080'] = address.split(':');
ื”ืชื™ืงื•ืŸ ื”ืงืฉื” ื”ื™ื” ืœื”ืชืžื•ื“ื“ ืขื ื›ืœ ืฉืืจ ื”ื“ื‘ืจื™ื ืฉืžืฉืชืžืฉื™ื ื™ื›ืœื• ืœื”ื›ื ื™ืก ื‘ืชื•ืš address, ืœืžืฉืœ ืœื”ื‘ื™ืŸ ืฉืžืฉืชืžืฉื™ื ื™ื›ื•ืœื™ื ืœื›ืชื•ื‘ http ื‘ื”ืชื—ืœื”, ืœื”ื•ืกื™ืฃ ื ืชื™ื‘, ืœื˜ืขื•ืช ื‘ืฉื ืฉืœ ื” host, ืœื›ืชื•ื‘ ื›ืชื•ื‘ืช IP ืœื ืชืงื™ื ื” ืื• ืžื™ืœื™ื•ืŸ ื˜ืขื•ื™ื•ืช ืื—ืจื•ืช ื‘ืกื’ื ื•ืŸ. ืงื•ื“ ื˜ื•ื‘ ืฆืจื™ืš ืœื”ืคืจื™ื“ ื‘ื™ืŸ ื”ืžื ื’ื ื•ืŸ ืฉืžืคืขื ื— ืืช ื”ืงืœื˜ ืœืžื ื’ื ื•ืŸ ืฉืขื•ืฉื” ืžืฉื”ื• ืขื ื”ืงืœื˜ ื”ืžืคื•ืขื ื—, ื•ืœืืคืฉืจ ืœื›ืœ ืื—ื“ ืžืฉื ื™ ื”ืžื ื’ื ื•ื ื™ื ืœื“ื•ื•ื— ืฉื’ื™ืื•ืช ื‘ืฆื•ืจื” ืฉืชืชืื™ื ื”ื›ื™ ื˜ื•ื‘ ืœืžืฉืชืžืฉ. ืฉื™ื ื•ื™ ื›ื–ื” ื”ื•ื ืงืฉื” ื›ื™ ื”ืฉื•ืจื” ื”ื™ืชื” ืงื‘ื•ืจื” ื‘ืคื•ื ืงืฆื™ื” ืฉืœ ืขืฉืจื•ืช ืฉื•ืจื•ืช ื•ื”ืžื ื’ื ื•ื ื™ื ื”ื™ื• ืžืขื•ืจื‘ื‘ื™ื ื™ื—ื“. ื›ืฉื™ืฉ ืกื˜ ื‘ื“ื™ืงื•ืช ื˜ื•ื‘ ืื ื—ื ื• ืžืจื’ื™ืฉื™ื ื‘ื ื•ื— ืœื‘ืฆืข ื’ื ืชื™ืงื•ื ื™ื ืงืฉื™ื, ืืคื™ืœื• ื›ืืœื” ืฉื“ื•ืจืฉื™ื ืจื™ืคืงื˜ื•ืจื™ื ื’ ืžืฉืžืขื•ืชื™. ืœืฆืขืจื ื• ื‘ืจื•ื‘ ื”ืžืขืจื›ื•ืช ื›ืฉื”ืžื ื’ื ื•ื ื™ื ื”ืฉื•ื ื™ื ื‘ืงื•ื“ ืžืขื•ืจื‘ื‘ื™ื ื™ื—ื“, ื–ื” ื‘ื ื™ื—ื“ ืขื ื–ื” ืฉืœืžืขืจื›ืช ืื™ืŸ ื‘ื“ื™ืงื•ืช ื•ื™ืฉ ื”ืžื•ืŸ ืžืงืจื™ ืงืฆื” ืœื ืžืชื•ืขื“ื™ื, ื›ืš ืฉื”ืชื™ืงื•ืŸ ื”ืงืฉื” ื ืจืื” ื›ืžืขื˜ ื‘ืœืชื™ ืืคืฉืจื™. ื›ืŸ ืฉื•ื•ื” ืœื–ื›ื•ืจ ืฉื”ืชื™ืงื•ืŸ ื”ืงืฉื” ืœื ื™ื”ื™ื” ื”ืชื™ืงื•ืŸ ื”ืงืฉื” ื”ืื—ืจื•ืŸ ื‘ืงื•ื“. ืื ื‘ื›ืœ ื–ืืช ืื ื—ื ื• ืžืงื‘ืœื™ื ื”ื–ื“ืžื ื•ืช ืœื‘ืฆืข ืื•ืชื•, ื›ื“ืื™ ืœื ืฆืœ ืื•ืชื” ื›ื“ื™ ืœื›ืชื•ื‘ ืกื˜ ื‘ื“ื™ืงื•ืช ืขื‘ื•ืจ ื”ืชื™ืงื•ืŸ ื”ืงืฉื” ื”ื‘ื.

ToCode
1 420
ื˜ื™ืค ืกืงืืœื”: ื”ื—ื–ืจืช ืชื•ืฆืื” ืขืชื™ื“ื™ืช ื”ืžื ื’ื ื•ืŸ ื”ืžื•ื‘ื ื” ืฉืœ Future ื‘ืกืงืืœื” ื”ื•ื ืื•ืžื ื ืคื—ื•ืช ืžืชื•ื—ื›ื ืžืกืคืจื™ื•ืช ื›ืžื• cats effect ืื‘ืœ ื‘ื”ื—ืœื˜ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื™ืžื•ืฉื™ ื‘ื‘ืขื™ื•ืช ืคืฉื•ื˜ื•ืช, ื•ืœื ื“ื•ืจืฉ ืืจื’ื•ืŸ ืžื—ื“ืฉ ืฉืœ ืงื•ื“ ื”ืชื•ื›ื ื™ืช. ื ืจืื” ืื™ืš ื–ื” ืขื•ื‘ื“ ื“ืจืš ื“ื•ื’ืžื” ืคืฉื•ื˜ื”. ื”ืคื•ื ืงืฆื™ื” ื”ื‘ืื” ืžื™ื™ืฆืจืช ื•ืžื—ื–ื™ืจื” ืจืฉื™ืžื” ืฉืœ ืžืกืคืจื™ื:
  def createNumbers(): List[Int] =
    (1 to 10).map(_ =>
      Thread.sleep(Random.nextInt(500))
      Random.nextInt(100)).toList
ื•ื›ืžื•ื‘ืŸ ื™ืฉ ื˜ื•ื•ื™ืกื˜ - ื‘ืฉื‘ื™ืœ ืœื™ื™ืฆืจ ืžืกืคืจ ืื ื—ื ื• ืžื—ื›ื™ื ืขื“ ื—ืฆื™ ืฉื ื™ื” ืขื Thread.sleep. ืื ื ื™ืงื— ืืช ื”ืจืฉื™ืžื” ืžื‘ื—ื•ืฅ ื•ื ื ืกื” ืœื”ื“ืคื™ืก ืื•ืชื” ืขื ืงื•ื“ ื›ื–ื”:
createNumbers().foreach(println(_))
ื”ืงื•ื“ ื™ื—ื›ื” ืขื“ ืฉื”ืจืฉื™ืžื” ื›ื•ืœื” ืžื•ื›ื ื” ื•ืจืง ืื– ื™ื“ืคื™ืก ื‘ืžื›ื” ืื—ืช ืืช ื›ืœ ื”-10 ืžืกืคืจื™ื. ื–ื” ืขืœื•ืœ ืœื”ื™ื•ืช ื‘ืขื™ื™ืชื™ ื›ื™ ืื ืžืื™ื–ื•ืฉื”ื™ ืกื™ื‘ื” ื”ืชื•ื›ื ื™ืช ืชืกืชื™ื™ื ืขื ืฉื’ื™ืื” ืœืคื ื™ ืฉื”ืฆืœื™ื—ื” ืœื™ื™ืฆืจ ืืช ื›ืœ ื”ืจืฉื™ืžื” ืืฃ ืžืกืคืจ ืœื ื™ื•ื“ืคืก. ื‘ืขื–ืจืช ืžื ื’ื ื•ืŸ Future ืื ื™ ื™ื›ื•ืœ ืœื™ื™ืฆืจ ืจืฉื™ืžื” ืฉืชื”ื™ื” ื–ืžื™ื ื” ืœืงื•ื“ ื”ื—ื™ืฆื•ื ื™ ื’ื ืœืคื ื™ ืฉื›ืœ ื”ืคืจื™ื˜ื™ื ื—ื•ืฉื‘ื• ื‘ืžืœื•ืื. ื”ืจืขื™ื•ืŸ ื‘ื’ื“ื•ืœ ื”ื•ื ืฉื‘ืžืงื•ื ืœื”ื—ื–ื™ืจ ืจืฉื™ืžื” ืฉืœ ืžืกืคืจื™ื ืื ื™ ืžื—ื–ื™ืจ ืจืฉื™ืžื” ืฉืœ ืชื•ืฆืื•ืช ืขืชื™ื“ื™ื•ืช (ื›ืŸ Future ืžื™ื™ืฆื’ ืชื•ืฆืื” ืขืชื™ื“ื™ืช ืฉืœ ื—ื™ืฉื•ื‘). ื–ื” ื”ืงื•ื“:
  def createFutureNumbers(): List[Future[Int]] =
    (1 to 10).map(_ => Future[Int] {
      Thread.sleep(Random.nextInt(500))
      Random.nextInt(100)
    }).toList
ื‘ืงื•ื“ ื”ื—ื™ืฆื•ื ื™ ืื ื™ ืœื•ืงื— ื›ืœ Future ื•"ืžื“ื‘ื™ืง" ืœื• ืงื•ื“ ืฉื™ื‘ื•ืฆืข ืื—ืจื™ ืฉืื•ืชื• ื—ื™ืฉื•ื‘ ืขืชื™ื“ื™ ื™ื”ื™ื” ืžื•ื›ืŸ. ื‘ื“ื•ื’ืžืช ื”ื”ื“ืคืกื” ื–ื” ื™ื”ื™ื”:
val futures = createFutureNumbers()
futures.foreach(f => f.onComplete(i => println(i.get)))
ืœืื—ืจ ืžื›ืŸ ืื ื™ ืจื•ืฆื” ืœื—ื›ื•ืช ืขื“ ืฉื›ืœ ื”ื—ื™ืฉื•ื‘ื™ื ื”ืขืชื™ื“ื™ื™ื ื™ืกืชื™ื™ืžื•, ืœื›ืŸ ืื ื™ ื”ื•ืคืš ืืช ืจืฉื™ืžืช ื”ื—ื™ืฉื•ื‘ื™ื ื”ืขืชื™ื“ื™ื™ื ืœ Future ืื—ื“ ืฉื™ื”ื™ื” ืžื•ื›ืŸ ื›ืฉื›ืœ ื”ืคืจื™ื˜ื™ื ื‘ืจืฉื™ืžื” ื—ื•ืฉื‘ื• ื‘ืขื–ืจืช ื”ืคื•ื ืงืฆื™ื” sequence. ืคื•ื ืงืฆื™ื” ื ื•ืกืคืช ื‘ืฉื Await.ready ืชื—ื›ื” ืขื“ ืฉ Future ืžืกืชื™ื™ื ื•ื›ืš ืชืืคืฉืจ ืœืชื•ื›ื ื™ืช ืœืจื•ืฅ ืขื“ ืœืกื™ื•ื ื›ืœ ื”ื”ื“ืคืกื•ืช. ืกืš ื”ื›ืœ ื”ืงื•ื“ ื”ื—ื™ืฆื•ื ื™ ื™ื”ื™ื”:
  @main
  def f(): Unit =
      val futures = createFutureNumbers()
      futures.foreach(f => f.onComplete(i => println(i.get)))
      Await.ready(Future.sequence(futures), Duration.Inf)
ื™ื•ืชืจ ืžื–ื”, ื” Future ื‘ืกืงืืœื” ื›ื•ืœืœ ืคื•ื ืงืฆื™ื” ื‘ืฉื flatMap ืฉืžืืคืฉืจืช ืœื”ื•ืกื™ืฃ ืœื• ื”ืžืฉืš ื—ื™ืฉื•ื‘. ื‘ื—ื–ืจื” ืœื“ื•ื’ืžื” ื ื ื™ื— ืฉืื—ืจื™ ืฉื”ืžืกืคืจ ืžื•ื›ืŸ ื”ืชื•ื›ื ื™ืช ืชื—ื›ื” ืขื•ื“ ืžืกืคืจ ืžื™ืœื™ ืฉื ื™ื•ืช ืœืคื™ ื”ืžืกืคืจ ืฉื—ื•ืฉื‘ ื•ืื– ืชืขืœื” ืื•ืชื• ื‘ืจื™ื‘ื•ืข, ื•ื‘ืกื•ืฃ ืชื“ืคื™ืก ืืช ืจื™ื‘ื•ืขื™ ื›ืœ ื”ืžืกืคืจื™ื. ื”ืงื•ื“ ื”ืžืขื•ื“ื›ืŸ ืœื–ื” ื™ื”ื™ื” ื‘ืกืš ื”ื›ืœ:
  def f(): Unit =
      val futures = createFutureNumbers().map {f =>
        f.flatMap(i => Future({
          Thread.sleep(i)
          i * i
        }))
      }

      futures.foreach(f => f.onComplete(i => println(i.get)))
      Await.ready(Future.sequence(futures), Duration.Inf)

ToCode
1 420
ืœื ื™ื›ื•ืœ ืœืœืžื“ ืืช ื–ื” ืฉื ื™ ื”ืžื™ืžื•ืฉื™ื ื”ื‘ืื™ื ื‘ืคื™ื™ืชื•ืŸ ืœื–ื™ื”ื•ื™ ื”ืื ืžืกืคืจ ื”ื•ื ืจืืฉื•ื ื™ ืฉืงื•ืœื™ื ืœื’ืžืจื™:
* v1 - *
def is_prime_v1(n):
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True
    
* v2 - *
from math import sqrt
def is_prime_v2(n):
    return not any(n % i == 0 for i in range(2, int(sqrt(n)) + 1))
ื”ื”ื‘ื“ืœ ื”ื™ื—ื™ื“ ื”ื•ื ื›ืžื” ืžื•ืฉื’ื™ื ืฆืจื™ืš ืœื”ื›ื™ืจ ื›ื“ื™ ืœื”ื‘ื™ืŸ ืืช ื”ืงื•ื“. ื‘ืžื™ืžื•ืฉ ื”ืจืืฉื•ืŸ ืžืกืคื™ืง ืœื”ื‘ื™ืŸ ืžื” ื–ื” ืคื•ื ืงืฆื™ื” ื•ืœื”ืชืžื•ื“ื“ ืขื ืœื•ืœืื•ืช for ื• range. ื”ืžื™ืžื•ืฉ ื”ืฉื ื™ ื›ื‘ืจ ื“ื•ืจืฉ ื”ื™ื›ืจื•ืช ืขื Generator Comprehension, ืขื ื”ืคื•ื ืงืฆื™ื” any ื•ืขื ืคืงื•ื“ืช import. ืžื™ ืžื”ืฉื ื™ื™ื ืงืจื™ื ื™ื•ืชืจ? ืงืฉื” ืœื”ื’ื™ื“. ืžื” ืฉื‘ื˜ื•ื— ื”ื•ื ืฉื—ืฉื•ื‘ ืœื”ืชืื™ื ืืช ื”ืจืžื” ื”ืžื•ืฉื’ื™ืช ืฉืœ ื”ืงื•ื“ ืœืžืขืจื›ืช ื•ืœืกื‘ื™ื‘ื” ื‘ื” ื”ื•ื ื ื›ืชื‘. ื‘ Code Review ื”ืขืจื•ืช ื›ืžื• "ื”ืงื•ื“ ืžืกื•ืจื‘ืœ ืžื“ื™" ืื• "ื”ืงื•ื“ ืœื ืงืจื™ื" ืื•ืžืจื•ืช ื”ืจื‘ื” ืคืขืžื™ื "ื”ืงื•ื“ ืžืฉืชืžืฉ ื‘ืคื—ื•ืช ืžื“ื™ ืžื•ืฉื’ื™ื", ื•ืœืฆื“ ื”ืฉื ื™, ื”ืขืจื•ืช ื›ืžื• "ื”ืงื•ื“ ืžืชื•ื—ื›ื ืžื“ื™" ืื• "ื”ืงื•ื“ ืงืฉื” ืœืชื—ื–ื•ืงื”" ื‘ืกืš ื”ื›ืœ ืื•ืžืจื•ืช "ื”ืงื•ื“ ืžืฉืชืžืฉ ื‘ื™ื•ืชืจ ืžื“ื™ ืžื•ืฉื’ื™ื ืžื”ืฉืคื”". ืžืฉื—ืงื™ื ืขื ื”ืžื“ื“ ื‘ืงื•ื“ ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื ื™ื›ื•ืœื™ื ืœืœืžื“ ืื•ืชื ื• ื”ืจื‘ื” ืขืœ ื”ืฉืคื” ื•ื”ืงื•ื“ ืขืฆืžื•.

ToCode
1 420
ืœื ื™ื›ื•ืœ ืœืœืžื“ ืืช ื–ื” ืฉื ื™ ื”ืžื™ืžื•ืฉื™ื ื”ื‘ืื™ื ื‘ืคื™ื™ืชื•ืŸ ืœื–ื™ื”ื•ื™ ื”ืื ืžืกืคืจ ื”ื•ื ืจืืฉื•ื ื™ ืฉืงื•ืœื™ื ืœื’ืžืจื™:
* v1 - *
def is_prime_v1(n):
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True
    
* v2 - *
from math import sqrt
def is_prime_v2(n):
    return not any(n % i == 0 for i in range(2, int(sqrt(n)) + 1))
ื”ื”ื‘ื“ืœ ื”ื™ื—ื™ื“ ื”ื•ื ื›ืžื” ืžื•ืฉื’ื™ื ืฆืจื™ืš ืœื”ื›ื™ืจ ื›ื“ื™ ืœื”ื‘ื™ืŸ ืืช ื”ืงื•ื“. ื‘ืžื™ืžื•ืฉ ื”ืจืืฉื•ืŸ ืžืกืคื™ืง ืœื”ื‘ื™ืŸ ืžื” ื–ื” ืคื•ื ืงืฆื™ื” ื•ืœื”ืชืžื•ื“ื“ ืขื ืœื•ืœืื•ืช for ื• range. ื”ืžื™ืžื•ืฉ ื”ืฉื ื™ ื›ื‘ืจ ื“ื•ืจืฉ ื”ื™ื›ืจื•ืช ืขื Generator Comprehension, ืขื ื”ืคื•ื ืงืฆื™ื” any ื•ืขื ืคืงื•ื“ืช import. ืžื™ ืžื”ืฉื ื™ื™ื ืงืจื™ื ื™ื•ืชืจ? ืงืฉื” ืœื”ื’ื™ื“. ืžื” ืฉื‘ื˜ื•ื— ื”ื•ื ืฉื—ืฉื•ื‘ ืœื”ืชืื™ื ืืช ื”ืจืžื” ื”ืžื•ืฉื’ื™ืช ืฉืœ ื”ืงื•ื“ ืœืžืขืจื›ืช ื•ืœืกื‘ื™ื‘ื” ื‘ื” ื”ื•ื ื ื›ืชื‘. ื‘ Code Review ื”ืขืจื•ืช ื›ืžื• "ื”ืงื•ื“ ืžืกื•ืจื‘ืœ ืžื“ื™" ืื• "ื”ืงื•ื“ ืœื ืงืจื™ื" ืื•ืžืจื•ืช ื”ืจื‘ื” ืคืขืžื™ื "ื”ืงื•ื“ ืžืฉืชืžืฉ ื‘ืคื—ื•ืช ืžื“ื™ ืžื•ืฉื’ื™ื", ื•ืœืฆื“ ื”ืฉื ื™, ื”ืขืจื•ืช ื›ืžื• "ื”ืงื•ื“ ืžืชื•ื—ื›ื ืžื“ื™" ืื• "ื”ืงื•ื“ ืงืฉื” ืœืชื—ื–ื•ืงื”" ื‘ืกืš ื”ื›ืœ ืื•ืžืจื•ืช "ื”ืงื•ื“ ืžืฉืชืžืฉ ื‘ื™ื•ืชืจ ืžื“ื™ ืžื•ืฉื’ื™ื ืžื”ืฉืคื”". ืžืฉื—ืงื™ื ืขื ื”ืžื“ื“ ื‘ืงื•ื“ ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื ื™ื›ื•ืœื™ื ืœืœืžื“ ืื•ืชื ื• ื”ืจื‘ื” ืขืœ ื”ืฉืคื” ื•ื”ืงื•ื“ ืขืฆืžื•.

ToCode
1 420
ืžื›ืชื‘ ืคืชื•ื— ืœืชืœืžื™ื“ ืฉื ืจื“ื (ืื•: ื•ืื ืื ื™ ืฆืจื™ืš ืขื•ื“ ื–ืžืŸ) ื™ืฉ ืฉื ื™ ืกื•ื’ื™ื ืฉืœ ืฉื™ืขื•ืจื™ื ืžืฉืขืžืžื™ื - ืœืคืขืžื™ื ื–ื” ืžืฉืขืžื ื›ื™ ืื ื—ื ื• ืžื›ื™ืจื™ื ืืช ื›ืœ ื”ื—ื•ืžืจ, ื•ืœืคืขืžื™ื ื›ื™ ื”ืงืฆื‘ ืœื ืžืชืื™ื ื•ืื ื—ื ื• ืคืฉื•ื˜ ืœื ืžื‘ื™ื ื™ื ื›ืœื•ื. ื”ืฉื™ืขืžื•ื ืžื”ืกื•ื’ ื”ืจืืฉื•ืŸ ื™ื•ืชืจ ืงืœ. ื›ืฉืื ื™ ื™ื•ื“ืข ืžื” ืงื•ืจื” ืื ื™ ื™ื›ื•ืœ ืœื ื•ื•ื˜ ื‘ืฉืœื•ื•ื” ืœื—ื“ืฉื•ืช, ืœืคื™ื™ืกื‘ื•ืง, ืœื˜ื•ื•ื™ื˜ืจ ืื• ืœื›ืœ ื’ื ื‘ ื–ืžืŸ ืื—ืจ. ืคืขื ื‘ื›ืžื” ื“ืงื•ืช ืืคืฉืจ ืœื”ื•ืฆื™ื ืืช ื”ืฉื ื•ืจืงืœ ื›ื“ื™ ืœืจืื•ืช ืฉื”ื—ื•ืžืจ ืขื“ื™ื™ืŸ ืžื•ื›ืจ. ื”ืฉื™ืขืžื•ื ื”ื™ื•ืชืจ ืงืฉื” ื”ื•ื ื–ื” ืžื”ืกื•ื’ ื”ืฉื ื™. ืฉื™ืขืžื•ื ืฉืœ ื—ื•ืกืจ ื”ื‘ื ื” ื”ื•ื ืžืชื™ืฉ, ื›ื™ ืื ื—ื ื• ืžืฉืงื™ืขื™ื ื”ืžื•ืŸ ืื ืจื’ื™ื” ื‘ืœื ืกื•ืช ืœื”ื‘ื™ืŸ, ื‘ืœื ืกื•ืช ืœื”ื“ื‘ื™ืง ืืช ื”ืงืฆื‘. ื‘ืžื‘ื ื” ืฉืœ ื”ืจืฆืื” ื’ื ืžืื•ื“ ืงืฉื” ืœืจืื•ืช ืืช ื”ืคืขืจ. ื–ื” ื”ืฉื™ืขืžื•ื ื”ืžืจื“ื™ื. ื›ืฉื ืชืงืœื™ื ื‘ืฉื™ืขืžื•ื ื›ื–ื” ื”ืื™ื ืกื˜ื™ื ืงื˜ ืฉืœื ื• ืžื˜ืขื”. ื‘ืื•ืชื• ืจื’ืข ืื ื—ื ื• ืจืง ืžื—ืคืฉื™ื "ืœืกื’ื•ืจ ืืช ื”ืคืขืจ", ืœื ืกื•ืช "ืœื”ื‘ื™ืŸ ื›ืžื” ืฉืืคืฉืจ", ืœื”ืžืฉื™ืš ืœื”ืงืฉื™ื‘ ืืคื™ืœื• ืฉื–ื” ืžืฉืขืžื ื›ื™ ืœืžื“ื ื• ื‘ื‘ื™ืช ืกืคืจ ืฉื™ืฉ ืคื” ืžืฉื”ื• ื—ืฉื•ื‘ ื•ืฉื”ื”ื–ื“ืžื ื•ืช ื”ื–ืืช ืœื ืชื—ื–ื•ืจ. ืขื›ืฉื™ื• ืžืงืฉื™ื‘ื™ื, ืื—ืจื™ ื–ื” ืžื‘ื™ื ื™ื. ื•ืžืจื•ื‘ ืจืฆื•ืŸ ืœื”ื‘ื™ืŸ ื”ืขื™ื ื™ื™ื ื ืขืฆืžื•ืช ื•ื”ืคื” ืžืคื”ืง, ื›ื™ ื”ื’ื•ืฃ ื›ื‘ืจ ื™ื•ื“ืข ืžื” ืฉื”ืžื•ื— ืœื ืจื•ืฆื” ืœืฉืžื•ืข. ื•ื”ืืžืช ื”ื›ื•ืื‘ืช ื”ื™ื ืฉื”ืคืขืจ ื™ื•ืชืจ ื’ื“ื•ืœ ืžืžื” ืฉื”ืžื•ื— ื”ื™ื” ืจื•ืฆื” ืœื“ืžื™ื™ืŸ. ื–ื” ืœื ืื™ื–ื” "ืจืขื™ื•ืŸ" ืงื˜ืŸ ืฉืฆืจื™ืš ืœืฉืžื•ืข ื•ื”ื›ืœ ื™ืกืชื“ืจ, ืืœื ืขื‘ื•ื“ืช ื”ืฉืœืžื” ืžืฉืžืขื•ืชื™ืช ื›ื“ื™ ืœืกื’ื•ืจ ืืช ืื•ืชื• ืคืขืจ. ื’ื ืื ื‘ืงื•ืจืก ื ืชื ื• ืœื ื•ืฉื ื—ืฆื™ ืฉืขื”, ืื•ืœื™ ืื ื™ ืฆืจื™ืš ืืจื‘ืข ืฉืขื•ืช ื›ื“ื™ ืœื”ื‘ื™ืŸ ืืช ื”ื ื•ืฉื ื”ื–ื”. ื”ืงืฆื‘ ืฉืœื™ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื•ื ื” ืžื”ืงืฆื‘ ืฉืœ ืื—ืจื™ื ื•ื”ื ื™ืกื™ื•ืŸ ืœืœืžื•ื“ ื‘ืงืฆื‘ ืฉืœื ืžืชืื™ื ืœื™ ื”ื•ื ืคืฉื•ื˜ ืžืชื™ืฉ. ื‘ืžืฆื‘ ื›ื–ื” ื”ืคื™ืชืจื•ืŸ ื”ื›ื™ ื˜ื•ื‘ ื•ื”ื™ื—ื™ื“ ืฉืขื•ื‘ื“ ื”ื•ื ืœื”ื™ืฆืžื“ ืœืงืฆื‘ ืฉืœืš, ื’ื ืื ื–ื” ืœื ื”ืงืฆื‘ ืฉืœ ื”ื›ื™ืชื” ืื• ื”ื•ื™ื“ืื•. ื–ื” ื‘ืกื“ืจ ืœืจืื•ืช ืืช ืื•ืชื• ืฉื™ืขื•ืจ ื›ืžื” ืคืขืžื™ื. ื–ื” ื‘ืกื“ืจ ืœื”ืฉืงื™ืข ืฉื‘ื•ืขื™ื™ื ื‘ื“ืฃ ืชืจื’ื™ืœื™ื, ื’ื ืื ืžื™ืฉื”ื• ืื—ืจ ืคืชืจ ืื•ืชื• ื‘ื™ื•ื. ืœื™ืžื•ื“ ื–ื” ืœื ืชื—ืจื•ืช ื•ื”ืงื‘ื•ืฆื” ืœื ื—ื›ืžื” ื™ื•ืชืจ ืžื›ืœ ืื—ื“ ืžื”ืื ืฉื™ื ื‘ื”. ื”ืงืฆื‘ ื”ื™ื—ื™ื“ ืฉืขื•ื‘ื“ ื”ื•ื ื”ืงืฆื‘ ืฉืขื•ื‘ื“ ืขื‘ื•ืจืš.

ToCode
1 420
ื˜ื™ืค ืกืงืืœื”: ื”ื“ืคืกืช ื“ื™ื‘ื’ ื‘ืืžืฆืข Pipeline ื‘ืฉืคื•ืช ืคื•ื ืงืฆื™ื•ื ืืœื™ื•ืช ื“ื™ื ืžื™ื•ืช ื›ืžื• ืงืœื•ื–'ืจ ืื• ืืœื™ืงืกื™ืจ, ื™ืฉ ืื•ืคืจื˜ื•ืจ Pipeline ืฉืฉื•ืœื— ืืช ื”ืชื•ืฆืื” ืฉืœ ืคื•ื ืงืฆื™ื” ืื—ืช ื‘ืชื•ืจ ืงืœื˜ ืœืคื•ื ืงืฆื™ื” ื”ื‘ืื” ื‘ืชื•ืจ. ืœื“ื•ื’ืžื” ื”ืงื•ื“ ื”ื‘ื ื‘ืงืœื•ื–'ืจ:
(->> 10
  (range)
  (map #(* %1 %1))
  (reduce +)
  (println))
ืœื•ืงื— ืืช ื”ืžืกืคืจ 10, ืฉื•ืœื— ืื•ืชื• ื‘ืชื•ืจ ื”ืคืจืžื˜ืจ ืœืคื•ื ืงืฆื™ื” range, ืื—ืจื™ ื–ื” ืœื•ืงื— ืืช ื”ืชื•ืฆืื” ืฉืœ range ื‘ืชื•ืจ ืงืœื˜ ืœืคื•ื ืงืฆื™ื™ืช ื” map, ืืช ื”ืชื•ืฆืื” ืฉืœ map ื”ื•ื ืฉื•ืœื— ืœ reduce ื•ืืช ื–ื” ื™ืฉืœื— ืœ println ื›ื“ื™ ืœื”ื“ืคื™ืก. ืกืš ื”ื›ืœ ื ืงื‘ืœ ืขืœ ื”ืžืกืš ืืช ืกื›ื•ื ืจื™ื‘ื•ืขื™ ื”ืžืกืคืจื™ื ืžืืคืก ืขื“ ืชืฉืข. ืื ื™ืฉ ื‘ืขื™ื” ื‘ื—ื™ืฉื•ื‘ ืืคืฉืจ ืœื”ื’ื“ื™ืจ ื‘ืงืœื•ืช ืคื•ื ืงืฆื™ื” ืฉืžื“ืคื™ืกื” ืืช ื”ืคืจืžื˜ืจื™ื ืฉืงื™ื‘ืœื” ื•ืžื—ื–ื™ืจื” ืื•ืชื, ื•ืื– ืœื”ื•ืกื™ืฃ ืื•ืชื” ื‘ืืžืฆืข ื” Pipeline ื›ื“ื™ ืœืจืื•ืช ืกื˜ื˜ื•ืก ื‘ื™ื ื™ื™ื:
(defn debug [n]
  (println n)
  n)

(->> 10
  (debug)
  (range)
  (debug)
  (map #(* %1 %1))
  (debug)
  (reduce +)
  (println))
ื”ื“ืคืกื•ืช ื”ื‘ื™ื ื™ื™ื ืขื•ื–ืจื•ืช ืœื”ื‘ื™ืŸ ืžื” ืงื•ืจื” ืฉื ื•ืœืชืงืŸ ื‘ืขื™ื•ืช ื›ืฉืฆืจื™ืš. ื‘ืžืขื‘ืจ ืœืกืงืืœื” ืžืื•ื“ ื”ืชื’ืขื’ืขืชื™ ืœืžื ื’ื ื•ืŸ ื”ื–ื”, ื›ื™ื•ื•ืŸ ืฉื‘ืกืงืืœื” ืงืจื™ืื” ื‘ืฉืจืฉืจืช ืœืคื•ื ืงืฆื™ื•ืช ืžืฉืชืžืฉืช ื‘ืชื—ื‘ื™ืจ ื”ืžืชื•ื“ื•ืช ืฉืœ ืชื›ื ื•ืช ืžื•ื ื—ื” ืขืฆืžื™ื. ื›ื›ื” ื ืจืื” ืงื•ื“ ืกืงืืœื” ืžืงื‘ื™ืœ ืœืงืœื•ื–'ืจ ืžืชื—ื™ืœืช ื”ืคื•ืกื˜:
  println(
    (0 to 9)
      .map(_.pow(2))
      .sum
  )
ืื– ื–ื” ื”ื™ื” ืคืฉื•ื˜ ื‘ืกืงืืœื” ืื ื™ ืœื ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ืคืขืžื™ื™ื ื‘ืคืจืžื˜ืจ ืฉืœ ืคื•ื ืงืฆื™ื” ืื ื•ื ื™ืžื™ืช ืื‘ืœ ื‘ืžืงื•ื ื–ื” ื™ืฉ ืœื™ ืคื•ื ืงืฆื™ื” ืœื”ืขืœื•ืช ื‘ืจื™ื‘ื•ืข, ื˜ื•ื•ื— ื›ื•ืœืœ ืืช ื”ืžืกืคืจ ื”ืื—ืจื•ืŸ ืœื›ืŸ ืžืกื™ื™ืžื™ื ื‘ืชืฉืข ื•ื™ืฉ ืคื•ื ืงืฆื™ื™ืช sum ืื– ืœื ืฆืจื™ื›ื™ื ืืช reduce. ื•ื‘ื›ืœ ื–ืืช ืฉื ื™ ื“ื‘ืจื™ื ืคื•ื’ืขื™ื ืคื” ื‘ื—ื•ื•ื™ื” - ื”ืจืืฉื•ืŸ ื”ื•ื ืฉ println ืฆืจื™ืš ืœื”ื™ื›ืชื‘ ื‘ื”ืชื—ืœื” ื‘ืชื•ืจ ืคื•ื ืงืฆื™ื”, ื•ื”ืฉื ื™ ืฉื’ื ืื ืื›ืชื•ื‘ ืคื•ื ืงืฆื™ื™ืช debug ื›ืžื• ืฉื”ื™ืชื” ืœื™ ื‘ืงืœื•ื–'ืจ ื”ื™ื ืœื ื—ืœืง ืžื”ืคื™ื™ืคืœื™ื™ืŸ. ืœืฉืžื—ืชื ื• ืžื ื’ื ื•ืŸ ื” Extensions ืฉืœ ืกืงืืœื” ืžืืคืฉืจ ืœืคืชื•ืจ ืืช ืฉืชื™ ื”ื‘ืขื™ื•ืช ื™ื—ืกื™ืช ื‘ืงืœื•ืช. ืื ื™ ืžื’ื“ื™ืจ Extension ื’ื ืจื™ ืฉื™ื•ืกื™ืฃ ืืช ื”ืคื•ื ืงืฆื™ื” debug ืœื›ืœ ืขืจืš ื‘ืฉืคื”. ื–ื” ื ืจืื” ื›ื›ื”:
extension [A](value: A)
  def debug(): A =
    println(value)
    value
}

@main
def main(): Unit =
  println(
    (0 to 9)
      .debug()
      .map(_.pow(2))
      .debug()
      .sum
  )
ื•ื”ืคืœื˜:
NumericRange 0 to 9
Vector(0, 1, 4, 9, 16, 25, 36, 49, 64, 81)
285
ื™ื•ืชืจ ืžื–ื”, ื‘ื’ืœืœ ืฉื—ืœืง ืžื”ืื•ื‘ื™ืงื˜ื™ื ื‘ืฉืคื” ืžื—ื•ืฉื‘ื™ื ื‘ืฆื•ืจื” ืขืฆืœื” (ืœืžืฉืœ Range), ืืคืฉืจ ืœื”ื•ืกื™ืฃ ืขื•ื“ ืคื•ื ืงืฆื™ื” ืฉืชื”ืคื•ืš ืื™ื˜ืจื˜ื•ืจื™ื ืœืจืฉื™ืžื•ืช ื•ืื– ืชื“ืคื™ืก ืื•ืชื, ืจืง ืฉื™ืžื• ืœื‘ ืœื ืœื”ืคืขื™ืœ ืื•ืชื” ืขืœ ื“ื‘ืจื™ื ืื™ื ืกื•ืคื™ื™ื:

extension [A](value: A)
  def debug(): A =
    println(value)
    value

  def eagerDebug(): A = value match {
    case it: Iterable[_] =>
      println(it.toList)
      value
    case it: Iterator[_] =>
      println(it.toList)
      value
    case _ =>
      println(value.getClass)
      value
  }

@main
def main(): Unit =
  println(
    (0 to 9)
      .eagerDebug()
      .map(_.pow(2))
      .debug()
      .sum
  )
ื•ืื ื›ื‘ืจ ื”ื•ืกืคื ื• ืืช debug ื ื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ื” ื’ื ื‘ืกื•ืฃ ื”ืคื™ื™ืคืœื™ื™ืŸ ื›ื“ื™ ืœื”ื“ืคื™ืก ื‘ืกื’ื ื•ืŸ ืงืœื•ื–'ืจ:
@main
def main(): Unit =
  (0 to 9)
    .eagerDebug()
    .map(_.pow(2))
    .debug()
    .sum
    .debug()

ToCode
1 420
ืกืงืจื™ืคื˜ื™ื ื‘ JavaScript? ืชื ื• ืฆ'ืื ืก ืœื“ื™ื ื•ื–ืื•ืจ ืื—ืช ื”ื‘ืขื™ื•ืช ื‘ืฉื™ืžื•ืฉ ื‘ node.js ืœื›ืชื™ื‘ืช ืกืงืจื™ืคื˜ื™ื ื”ื™ื ื”ืงื•ื‘ืฅ package.json, ืื• ื™ื•ืชืจ ื ื›ื•ืŸ ื”ืฆื•ืจืš ืœืฆืจืฃ ืื•ืชื• ืœืกืงืจื™ืคื˜ ื›ื“ื™ ืœื”ืชืงื™ืŸ ืืช ื”ืชืœื•ื™ื•ืช. ื”ืชื•ื›ื ื™ืช ื”ื‘ืื” ื‘ node.js ืžืชื•ืš ืงื•ื“ ื”ื“ื•ื’ืžื” ืฉืœ ื”ืžื•ื“ื•ืœ wikipedia ืขืœ npm ืœื ื™ื›ื•ืœื” ืœืจื•ืฅ ืœื‘ื“:
const wiki = require('wikipedia');

(async () => {
 try {
  const page = await wiki.page('Batman');
  console.log(page);
  //Response of type @Page object
  const summary = await page.summary();
  console.log(summary);
  //Response of type @wikiSummary - contains the intro and the main image
 } catch (error) {
  console.log(error);
  //=> Typeof wikiError
 }
})();
ื‘ืฉื‘ื™ืœ ืฉื”ื™ื ืชืขื‘ื•ื“ ืื ื™ ืฆืจื™ืš ืœื™ืฆื•ืจ ืื™ืชื” ื‘ืชื™ืงื™ื” ืงื•ื‘ืฅ package.json ื•ืœื”ืคืขื™ืœ npm install ืื• ืœื”ืคืขื™ืœ
npm install wikipedia
ืžืฉื•ืจืช ื”ืคืงื•ื“ื” ืœืคื ื™ ื”ืจืฆื”. ืขื›ืฉื™ื• ื‘ื•ืื• ื ืจืื” ืื™ืš ืื•ืชื• ื˜ืจื™ืง ื™ืขื‘ื•ื“ ืขื ื“ื™ื ื•. ื“ื‘ืจ ืจืืฉื•ืŸ ืฆืจื™ืš ืœืฉื ื•ืช ืืช ืฉื•ืจืช ื” require ืœ import, ื•ืœืฆื™ื™ืŸ ืฉืื ื™ ื˜ื•ืขืŸ ืืช ื”ืžื•ื“ื•ืœ ืž npm ื›ืš ืฉืงื•ื“ ื”ืชื•ื›ื ื™ืช ื™ื”ื™ื”:
import wiki from 'npm:wikipedia';


(async () => {
 try {
  const page = await wiki.page('Batman');
  console.log(page);
  //Response of type @Page object
  const summary = await page.summary();
  console.log(summary);
  //Response of type @wikiSummary - contains the intro and the main image
 } catch (error) {
  console.log(error);
  //=> Typeof wikiError
 }
})();
ื•ืžื›ืืŸ ื–ื” ืจืง ืžืฉืชืคืจ. ืื ื™ ืžืจื™ืฅ ืืช ื”ืงื•ื“ ื•ื“ื™ื ื• ืžืชื—ื™ืœ ืœื”ื–ื”ื™ืจ ืื•ืชื™:
$ deno run demo.js

โš ๏ธ  โ”Œ Deno requests env access to "npm_config_no_proxy".
   โ”œ Run again with --allow-env to bypass this prompt.
   โ”” Allow? [y/n] (y = yes, allow; n = no, deny) >
ืฉื™ื ืœื‘, ื”ื•ื ืื•ืžืจ, ื”ืกืงืจื™ืคื˜ ืžืขื•ื ื™ื™ืŸ ืœืงืจื•ื ืžื™ื“ืข ืžืžืฉืชื ื” ืกื‘ื™ื‘ื” ื•ืืคื™ืœื• ื›ื•ืชื‘ ืืช ื”ืฉื ืฉืœ ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื”. ืื ื™ ื™ื›ื•ืœ ืœืืฉืจ ืขื y ืื• ืœื”ืจื™ืฅ ืžื—ื“ืฉ ืขื --allow-end ื›ื“ื™ ืฉืœื ื™ืฉืืœ ื™ื•ืชืจ ืขืœ ื’ื™ืฉื” ืœืžืฉืชื ื™ ืกื‘ื™ื‘ื”. ืื ื™ ืžืืฉืจ ื•ืžืžืฉื™ื›ื™ื ืœืฉืืœื•ืช ื”ื‘ืื•ืช. ื›ืš ื–ื” ื ืจืื” ื‘ืกื•ืฃ:
$ deno run demo.js

โœ… Granted env access to "npm_config_no_proxy".
โœ… Granted env access to "NPM_CONFIG_NO_PROXY".
โœ… Granted env access to "no_proxy".
โœ… Granted env access to "NO_PROXY".
โœ… Granted env access to "npm_config_https_proxy".
โœ… Granted env access to "NPM_CONFIG_HTTPS_PROXY".
โœ… Granted env access to "https_proxy".
โœ… Granted env access to "HTTPS_PROXY".
โœ… Granted env access to "npm_config_proxy".
โœ… Granted env access to "NPM_CONFIG_PROXY".
โœ… Granted env access to "all_proxy".
โœ… Granted env access to "ALL_PROXY".
โœ… Granted read access to "/Users/ynonp/Library/Caches/deno/npm/node_modules".
โœ… Granted read access to "/Users/ynonp/Library/Caches/deno/node_modules".
โœ… Granted read access to "/Users/ynonp/Library/Caches/node_modules".
โœ… Granted read access to "/Users/ynonp/Library/node_modules".
โœ… Granted read access to "/Users/ynonp/node_modules".
โœ… Granted read access to "/Users/node_modules".
โœ… Granted read access to "/node_modules".
โœ… Granted net access to "en.wikipedia.org".
ื•ืื—ืจื™ ื–ื” ืžื’ื™ืข ื”ืคืœื˜ ื”ืจื’ื™ืœ ืฉืœ ื”ืกืงืจื™ืคื˜. ืื ืื ื™ ืกื•ืžืš ืขืœ ื”ืกืงืจื™ืคื˜ ืื ื™ ื™ื›ื•ืœ ืคืขื ื”ื‘ืื” ืœื”ืจื™ืฅ ืื•ืชื• ืขื ื”ืžืชื’ื™ื:
$ deno run --allow-net --allow-read --allow-env demo.js
ื›ื“ื™ ืœื“ืœื’ ืขืœ ื”ืฉืืœื•ืช. ืกืš ื”ื›ืœ ื›ืชื™ื‘ื” ื•ื”ืจืฆืช ืกืงืจื™ืคื˜ ืขื ื“ื™ื ื• ื ืชื ื” ืœื™ ืฉื ื™ ื™ืชืจื•ื ื•ืช ืžืฉืžืขื•ืชื™ื™ื ืขืœ ืคื ื™ node: 1. ืื™ืŸ ืฆื•ืจืš ื‘ืงื•ื‘ืฅ package.json, ื›ืœ ื”ืชืœื•ื™ื•ืช ืจืฉื•ืžื•ืช ื‘ืชื•ืš ืงื•ื‘ืฅ ื”ืกืงืจื™ืคื˜ ื•ื”ื”ืชืงื ื” ืงื•ืจื™ืช ืื•ื˜ื•ืžื˜ื™ืช ื‘ื”ืจืฆื” ื”ืจืืฉื•ื ื”. 2. ืื ื™ ื—ื•ืฉืฉ ื”ืจื‘ื” ืคื—ื•ืช ืžืงื•ื“ ื–ื“ื•ื ื™, ื›ื™ ื‘ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ืกืงืจื™ืคื˜ ืจืฅ ืขื ืžืขื˜ ืžืื•ื“ ื”ืจืฉืื•ืช.

ToCode
1 420
ื”ื™ื•ื ืœืžื“ืชื™ - ืœื ื›ื–ื” ืคืฉื•ื˜ ืœื—ืคืฉ ืžื”ืกื•ืฃ ื‘ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืืจื™ ื”ืชื—ื™ืœ ื”ื™ื•ื Advent Of Code ื•ืื•ืžื ื ืื ื™ ื›ื ืจืื” ืœื ืืฆืœื™ื— ืœืคืชื•ืจ ืืช ื›ืœ ื”ื—ื™ื“ื•ืช ืฉืœื• ื”ืฉื ื” ืขืœ ื”ื™ื•ื ื”ืจืืฉื•ืŸ ืื™ ืืคืฉืจ ืœื•ื•ืชืจ. ื‘ื—ื™ื“ื” ื”ื™ื•ืžื™ืช ื”ื™ื” ืฆืจื™ืš ืœืžืฆื•ื ื“ื‘ืจื™ื ื‘ืชื•ืš ื˜ืงืกื˜ื™ื. ืœื ื›ื–ื” ืžืกื•ื‘ืš ืขื“ ืฉื ืชืงืœื™ื ื‘ื˜ืจื™ืง ื”ืงื˜ืŸ ืฉืžืงืœืงืœ ื”ื›ืœ. ื”ืชืจื’ื™ืœ ื•ื”ื˜ืจื™ืง ื”ืกื™ืคื•ืจ ื‘ื’ื“ื•ืœ ื”ื™ื” ืœืžืฆื•ื ืกืคืจื•ืช ื‘ืชื•ืš ืฉื•ืจืช ื˜ืงืกื˜, ื›ืฉื”ืกืคืจื•ืช ื™ื›ื•ืœื•ืช ืœื”ื•ืคื™ืข ื‘ืชื•ืจ ืกืคืจื•ืช ืžืžืฉ ื›ืžื• 4, 9 ืื• 2 ืื• ื‘ืชื•ืจ ืฉื ื”ืกืคืจื” ื›ืžื• four, nine ืื• two. ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœืžืฆื•ื ื‘ื”ื™ื ืชืŸ ืฉื•ืจืช ื˜ืงืกื˜ ืืช ื”ืกื™ืคืจื” ื”ืจืืฉื•ื ื” ื•ื”ืกื™ืคืจื” ื”ืื—ืจื•ื ื” ื‘ื”. ืœืžืฉืœ ื‘ืฉื•ืจื”:
24
ื”ืกื™ืคืจื” ื”ืจืืฉื•ื ื” ื”ื™ื 2 ื•ื”ืื—ืจื•ื ื” ื”ื™ื 4. ื‘ืฉื•ืจื”:
abc7d
ื”ืกื™ืคืจื” 7 ื”ื™ื ื’ื ื”ืกื™ืคืจื” ื”ืจืืฉื•ื ื” ื•ื’ื ื”ืื—ืจื•ื ื”. ื•ื‘ืฉื•ืจื”:
eightwo
ื”ืกื™ืคืจื” 8 ื”ื™ื ื”ืจืืฉื•ื ื” ื• 2 ื”ื™ื ื”ืื—ืจื•ื ื”. ื ื™ืกื•ื™ 1 - ื—ื™ืคื•ืฉ ื›ืœ ื”ืžื•ืคืขื™ื ืจืขื™ื•ืŸ ืจืืฉื•ืŸ ืฉืืคืฉืจ ืœื ืกื•ืช ื›ื“ื™ ืœืžืฆื•ื ืืช ื”ืกื™ืคืจื” ื”ืจืืฉื•ื ื” ื•ื”ืื—ืจื•ื ื” ื”ื•ื ื—ื™ืคื•ืฉ ื’ืœื•ื‘ืืœื™, ื‘ืคื™ื™ืชื•ืŸ ื–ื” ื™ื”ื™ื”:
>>> digits = [str(i) for i in range(10)] + ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]

>>> digits_r = '|'.join(digits)

>>> re.findall(digits_r, "1abc3")
['1', '3']
ื•ื–ื” ืขื•ื‘ื“ ืขื“ ืฉื–ื” ืžืคืกื™ืง ืœืขื‘ื•ื“:
>>> re.findall(digitsr, "eightwo")
['eight']
ื›ื™ ื”ื‘ืขื™ื” ืฉื” t ืžืฉื•ืชืฃ ื’ื ืœ eight ื•ื’ื ืœ two ื•ืžื ื•ืข ื”ื‘ื™ื˜ื•ื™ื™ื ื”ืจื’ื•ืœืืจื™ื™ื ื›ื‘ืจ ืื™ื‘ื“ ืืช ื” t ื›ืฉื”ื•ื ืžืฆื ืืช eight. ืคื™ืชืจื•ืŸ - ื—ื™ืคื•ืฉ ื”ืคื•ืš ื‘ื”ื™ืขื“ืจ ื“ืจืš ื˜ื•ื‘ื” ืœื—ืคืฉ ืžื”ืกื•ืฃ ื‘ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืืจื™ ื ื“ืจืฉืช ื™ืฆื™ืจืชื™ื•ืช - ืœืžืฉืœ ืœื”ืคื•ืš ืืช ื›ืœ ื”ื˜ืงืกื˜ื™ื ืœืคื ื™ ื”ื—ื™ืคื•ืฉ ื•ืื– ืœื”ืคื•ืš ื—ื–ืจื” ืื—ืจื™ ืฉืžื•ืฆืื™ื ื›ื“ื™ ืœื“ืขืช ืื™ื–ื• ืกื™ืคืจื” ืžืฆืื ื•. ื‘ืคื™ื™ืชื•ืŸ ื–ื” ืงืœ:
>>> digits_re = '|'.join([d[::-1] for d in digits])
>>> [r[::-1] for r in re.findall(digits_re, "eightwo"[::-1])]
['two']