en
Feedback
ToCode

ToCode

Open in Telegram

讟讬驻讬诐 拽爪专讬诐 诇诪转讻谞转讬诐 诪讗转 讬谞讜谉 驻专拽

Show more
1 419
Subscribers
-124 hours
-17 days
-130 days
Posts Archive
ToCode
1 419
# 讟讬驻 讙讬讟: 拽讜诪讬讟 讝讛 诇讗 讛住讜祝 讛砖讬诇讜砖 讛拽讚讜砖 讘注讘讜讚讛 注诐 讙讬讟 讛讜讗 专爪祝 砖诪转讻谞转讬诐 诪讚拽诇诪讬诐 讻诪注讟 诪转讜讱 砖讬谞讛: add, commit 讜 push. 讜讘注讜讚 砖讬讞住讬转 讗谞砖讬诐 诪爪诇讬讞讬诐 诇讛砖转诪砖 讘 git reset 讗讞专讬 砖注讜砖讬诐 add 诇讚讘专 讛诇讗 谞讻讜谉, 讘拽讜诪讬讟 讛住讬驻讜专 砖讜谞讛 诇讙诪专讬. 讻诪注讟 讻诇 讛诪转讻谞转讬诐 砖专讗讬转讬 砖注讜讘讚讬诐 讘讙讬讟 诪专讙讬砖讬诐 砖讗讞专讬 commit 讞讬讬讘讬诐 诇注砖讜转 push. 讘讜讗讜 谞驻转讞 讗转 讝讛 讬讞讚. 讻砖讗转诐 注讜砖讬诐 拽讜诪讬讟 讗转诐 砖讜诪专讬诐 讗转 讛讙讬专住讗 讛谞讜讻讞讬转 砖诇 讛驻专讜讬拽讟 砖诇讻诐 讘爪讚. 讬讻讜诇 诇讛讬讜转 砖讛讙讬专住讗 砖砖诪专转诐 讟讜讘讛 讜砖讗转诐 专讜爪讬诐 诇讛砖转诪砖 讘讛, 讗讘诇 讙诐 讬讻讜诇 诇讛讬讜转 砖注讜讚 讻诪讛 专讙注讬诐 转讙诇讜 砖讛讬讗 诇讗 讻讝讜 讟讜讘讛. 讗讜诇讬 讬砖 讗讬讝讜 砖讙讬讗转 讻转讬讘 砖驻住驻住转诐, 讗讜诇讬 讗讬讝讜 讘讚讬拽讛 讛驻住讬拽讛 诇注讘讜专 讜诇讗 专讗讬转诐. 讗讜诇讬 讗驻讬诇讜 讬砖 注讜讚 转讬拽讜谉 砖砖讻讞转诐 诇讛讻谞讬住 讗讘诇 爪专讬讱 诇讛讬讜转 砖诐. 砖讬诪讜 诇讘 诇-4 拽讜诪讬讟讬诐 诇讚讜讙诪讗:
9a550c6 (HEAD -> master) actually this looks better in a class
e837614 changed some texts
3aa43e8 moved code to function
3785d2d intiial commit
讛 diff 讘讬谉 讛拽讜诪讬讟 讛讬砖谉 讘讬讜转专 诇讞讚砖 讘讬讜转专 谞专讗讛 讻讱:
diff --git a/a.rb b/a.rb
index 15aaec7..de05881 100644
--- a/a.rb
+++ b/a.rb
@@ -1 +1,8 @@
-puts "hello world"
+class Greeter
+  def hi
+    puts "Hello World"
+  end
+end
+
+g = Greeter.new
+g.hi
讘诪爪讘 讻讝讛 诪讘讟 注诇 诇讜讙 讛驻专讜讬拽讟 诇讗 诪诪砖 注讜讝专 诇讬 诇讛讘讬谉 诪讛 诪讘谞讛 讛拽讜讚 讜诪讛 拽专讛 讘讻诇 砖诇讘, 讗诇讗 讻讜诇诇 讛专讘讛 诪讬讚注 诪讬讜转专 注诇 砖诇讘讬 讘讬谞讬讬诐 砖讗讜诇讬 注讘专讜 诇讬 讘专讗砖 讘讝诪谉 砖讻转讘转讬 讗转 讛拽讜讚 讗讘诇 讗讬谉 诇讛诐 砖讜诐 讞砖讬讘讜转 讻砖诪住转讻诇讬诐 讗讞讜专讛 注诇 讛讛讬住讟讜专讬讛. 诪讛 砖讬驻讛 讘讙讬讟 讝讛 砖注讚 砖诇讗 注砖讬转讬 push 讗驻砖专 诇砖谞讜转 讘诇讬 讘注讬讛 讗转 诪讘谞讛 讜住讚专 讛拽讜诪讬讟讬诐 讜讗祝 讗讞讚 诇讗 讬砖讬诐 诇讘. 讛谞讛 讘驻专讜讬拽讟 讚讜讙诪讗 讛拽讟谉 砖诇讬 讗谞讬 讬讻讜诇 诇讻转讜讘:
$ git reset --soft 3785d2d
$ git add .
$ git commit -m 'Changed code to use object oriented syntax'
讜拽讬讘诇转讬 诇讜讙 讛专讘讛 讬讜转专 谞拽讬:
6a4e1ad (HEAD -> master) Changed code to use object oriented syntax
3785d2d intiial commit
讗谞讬 诇讗 诪驻住讬讚 讻讗谉 砖讜诐 诪讬讚注 讻讬讜讜谉 砖讛讛转诇讘讟讜讬讜转 砖诇讬 讗诐 诇讻转讜讘 讗转 讛拽讜讚 讘转讜专 驻讜谞拽爪讬讛 讗讜 讘讗讜转讬讜转 拽讟谞讜转 讗讜 讙讚讜诇讜转 讝讛 诇讗 讚讘专讬诐 砖爪专讬讱 诇砖诪讜专 讗讜转诐. 诇讻谉 讛讟讬驻 砖诇讬 诇讛讬讜诐 - 诇讗 拽专讛 讻诇讜诐 讗诐 注砖讬转诐 拽讜诪讬讟 讜砖谞讬讛 讗讞专讬 讝讛 讛转讞专讟转诐. 拽讜诪讬讟 讗讞讚 讟讜讘 注诐 讛讜讚注讛 诪驻讜专讟转 砖诪住讘讬专讛 诪讛 拽专讛 砖诐 讜诪讛 讛讛讙讬讜谉 注讚讬祝 讘讛专讘讛 注诇 20 拽讜诪讬讟讬诐 砖诪转讗专讬诐 讗转 讻诇 诪讛 砖注讘专 注诇讬讻诐 讘讗讜转讜 讬讜诐 讜诇讗 注讜讝专讬诐 诇讛讘讬谉 诪讛 拽专讛 讘拽讜讚. 谞.讘. 专讜爪讬诐 诇诇诪讜讚 讬讜转专 诇注讜诪拽 讗讬讱 诇注讘讜讚 讘 git 讜诇砖讞拽 注诐 拽讜诪讬讟讬诐 讻讗讬诇讜 讛讬讜 讻讚讜专讬 讙'讗讙诇讬谞讙? 讬砖 诇讬 拽讜专住 讜讬讚讗讜 砖转驻讜专 讘讚讬讜拽 注诇讬讻诐. 诪转讞讬诇讬诐 讻讗谉: https://www.tocode.co.il/bundles/git/

ToCode
1 419
# 砖诇讜砖 住讬讘讜转 诇砖诇讘 TypeScript 讘驻专讜讬拽讟 专讬讗拽讟 讛讘讗 砖诇讻诐 讟讬讬驻住拽专讬驻讟 注砖转讛 讚专讱 讗专讜讻讛 诪讗讝 讬爪讬讗转讛 诇讗讜讜讬专 讛注讜诇诐 讘讗讜拽讟讜讘专 2012, 讬讞讚 注诐 讻诇 注讜诇诐 讛讗讬谞讟专谞讟 讜讛驻讬转讜讞 诇讗讬谞讟专谞讟. 讛讬讜诐 讛讬讗 谞转诪讻转 讘讻诇 住讘讬讘讜转 讛驻讬转讜讞 讛诪专讻讝讬讜转 讜讘讻诇 诪注专讻讜转 讛讛驻注诇讛, 讗讘诇 讬讜转专 讞砖讜讘 诪讝讛 - 讘驻专讜讬拽讟 专讬讗拽讟 讛讬讗 诪砖转诇讘转 注诐 讛转讞讘讬专 砖诇 专讬讗拽讟 讻诪讜 讻驻驻讛 诇讬讚. 讛谞讛 砖诇讜砖 住讬讘讜转 诇砖诇讘 TypeScript 讘驻专讜讬拽讟 专讬讗拽讟 讛讘讗 砖诇讻诐: ## 讛讬讗 转砖诪讜专 注诇讬讻诐 诪讟注讜讬讜转 讟驻砖讬讜转, 讜专讜讘 讛讝诪谉 诇讗 转驻专讬注 诇注讘讜讚 讻砖讬砖 诇谞讜 诪爪讚 讗讞讚 讗转 讛讛转拽讚诪讜转 砖诇 TypeScript 讘讝讬讛讜讬 讛讟讬驻讜住讬诐, 讜诪爪讚 砖谞讬 讗转 专讬讗拽讟 砖注讜讘专转 诇讻转讬讘 砖诇 驻讜谞拽爪讬讜转 讜 Hooks - 讛砖讬诇讜讘 砖诇 TypeScript 讘驻专讜讬拽讟 专讬讗拽讟 讛讜讗 讻诪注讟 诇讗 诪讜专讙砖. 讚讜讙诪讗 讟讬驻讜住讬转 诇拽讜诪驻讜谞谞讟转 TypeScript 谞专讗讬转 讻讱:
import React, { useState } from "react";

export default function Person(props: {
    name: string,
    age: number
}) {
    const { name, age } = props;
    const canVote = age >= 18 ? "can" : "can't";

    return (
        <div>
            <p>Hi! my name is {name} and I {canVote} vote</p>
        </div>
    )
}
谞讻讜谉 - 讛讬讬转讬 爪专讬讱 诇住驻专 诇 TypeScript 诪讛 住讜讙讬 讛诪砖转谞讬诐 砖讛讙讬注讜 讘 Props, 讗讘诇 讝讛 诪讞讬专 拽讟谉 诇砖诇诐. 讛转诪讜专讛 讗讙讘 讛讬讗 砖讘讗讜驻谉 讗讜讟讜诪讟讬 TypeScript 讬讜讚注转 诇讘讚讜拽 砖讛注讘专转讬 讗转 讛 Props 讛谞讻讜谞讬诐 讗讬驻讛 砖爪专讬讱, 讜讬讜讚注转 诇砖诪讜专 注诇讬讬 讻讚讬 砖诇讗 讗砖转诪砖 讘诪讬讚注 讘爪讜专讛 诇讗 谞讻讜谞讛. 讛拽讜讚 讛讘讗 诇讚讜讙诪讗 诇讗 讬转拽诪驻诇:
function App() {
    return (
        <>
            <Person age="18" name="bob" />
        </>
    )
}
## 讛砖诇诪讜转 讗讜讟讜诪讟讬讜转 讬注讘讚讜 讛专讘讛 讬讜转专 讟讜讘 讗讞转 讛讘注讬讜转 砖诇讬 注诐 讛砖诇诪讛 讗讜讟讜诪讟讬转 讘 IDE 讛讬讗 砖讝讛 诇讗 注讜讘讚. 讻诇讜诪专, 诇 IDE 讬砖 讻讜讜谞讜转 讟讜讘讜转 讜专讜讘 讛讝诪谉 讛讜讗 讘讗诪转 诪谞住讛 诇讛砖诇讬诐 讗转 讛驻拽讜讚讛, 讗讘诇 转诪讬讚 讬讙讬注 讛专讙注 砖讗转讛 诪转讞讬诇 诇讻转讜讘 诪砖讛讜 讜讛讛砖诇诪讛 讛讗讜讟讜诪讟讬转 诇讗 注讜讘讚转, 讜讗讝 讗讬谉 诇讱 诪讜砖讙 讗诐 讝讛 讘讙诇诇 砖讻转讘转 诪砖讛讜 诇讗 谞讻讜谉 讗讜 讘讙诇诇 砖讛 IDE 讟讜注讛. 讘 TypeScript 讛讘注讬讛 讛讝讗转 讻讘专 诇讗 拽讜专讬转: 讘讝讻讜转 拽讘爪讬 讛讛讙讚专讜转 砖诪讻住讬诐 讻诇 讛讬讘讟 砖诇 砖驻转 JavaScript, 诪讗讜讚 拽诇 诇 IDE 诇讚注转 讘讚讬讜拽 讗讬讝讛 砖讚讜转 讬砖 讗讜 讗讬谉 诇讱 注诇 讛讗讜讘讬拽讟 讜诪讛 诪讜转专 诇注砖讜转 讗讬转诐. 讗讞专讬 讛诪注讘专 诇 TypeScript 诇讗 谞爪讟专讱 讬讜转专 诇讛转诇讘讟 讗诐 诇驻讜谞拽爪讬讛 砖讘讜讚拽转 讗诐 诪讞专讜讝转 谞诪爪讗转 讘转讜讱 诪讞专讜讝转 讗讞专转 拽讜专讗讬诐 includes 讗讜 contains, 讗讜 诪讛 讛讞转讬诪讛 砖诇 useRef. 讛讻诇 讻讘专 拽讬讬诐 讘转讜讱 讛砖驻讛. ## 转讜讻诇讜 诇讬讛谞讜转 诪转讞讘讬专 讞讚砖 砖注讚讬讬谉 诇讗 讛讙讬注 诇 JavaScript 讗讞专讬 讛诪注讘专 诇 TypeScript 转讜讻诇讜 诇讬讛谞讜转 诪讗讜驻专讟讜专 Optional Chaining 砖讬讞住讜讱 诇讻诐 诇讘讚讜拽 讻诇 驻注诐 讗诐 诪砖讛讜 讛讜讗 Null:
let x = foo?.bar.baz();
砖讝讛 讘讚讬讜拽 讻诪讜 诇讻转讜讘:
let x = (foo === null || foo === undefined) ?
    undefined :
    foo.bar.baz();
诪讗讜驻专讟讜专 讛 nullish coalescing 砖诪转谞讛讙 诪诪砖 讻诪讜 || 讗讘诇 讘讜讚拽 null 讘诪拽讜诐 false, 讻讱 讘砖讜专讛 讛讘讗讛:
let x = foo ?? bar();
讗诐 foo 讛讜讗 null 讗讜 undefined 谞讬拽讞 讗转 讛注专讱 砖诇 bar, 讗讘诇 讗诐 foo 讛讜讗 住转诐 false 谞砖转诪砖 讘讜. 讝讜 讙讬专住讗 诪转讜讞讻诪转 讬讜转专 砖诇 || 讛诪讗驻砖专转 讛讙讚专转 注专讻讬 讘专讬专转 诪讞讚诇 诇诪砖转谞讬诐 讘讜诇讬讗谞讬诐. 专讜爪讬诐 诇诇诪讜讚 注讜讚 注诇 TypeScript 讜 React 讜讗讬讱 讛谉 注讜讘讚讜转 讬讞讚? 讘讬讜诐 讞诪讬砖讬 讛拽专讜讘 讗注讘讬专 讻讗谉 讜讜讘讬谞专 讘谞讜砖讗 注诐 讛诪讜谉 讚讜讙诪讗讜转, 转讘谞讬讜转 谞驻讜爪讜转, 讘注讬讜转 砖讗转诐 注砖讜讬讬诐 诇讛讬转拽诇 讘讛谉 讜讚专讻讬 讛转诪讜讚讚讜转. 诪讜讝诪谞讬诐 诇讛爪讟专祝 讘讞讬谞诐 讘拽讬砖讜专: https://www.tocode.co.il/workshops/93.

ToCode
1 419
# 砖诇讘讬诐 诇驻讬转专讜谉 讘注讬讛 1. 讗谞讬 诇讗 诪讘讬谉 诪讛 专讜爪讬诐 诪诪谞讬 2. 讗讬谉 诇讬 诪讜砖讙 讗讬讱 诇讙砖转 诇讝讛 3. 讬砖 诇讬 专注讬讜谉 讗讘诇 讗讬谉 诇讬 诪讜砖讙 讗讬讱 诇讬讬砖诐 讗讜转讜 4. 讛转讞诇转讬 诇讬讬砖诐 讗转 讛专注讬讜谉 讗讘诇 讝讛 诇讗 注讘讚 - 诇讗 讘专讜专 诇讬 诇诪讛 5. 讛讘谞转讬 诇诪讛 讛专注讬讜谉 砖诇讬 诇讗 注讘讚. 注讻砖讬讜 砖讜讘 讗讬谉 诇讬 砖讜诐 专注讬讜谉. 6. 诪诪砖讬讻讬诐 讗转 2-5 讘诇讜诇讗讛, 诇驻注诪讬诐 讻诪讛 注砖专讜转 驻注诪讬诐. 讻诇 驻注诐 诇讜诪讚讬诐 注讜讚 诪砖讛讜 注诇 讛讘注讬讛 讜注诇 注讜讚 讚专讱 砖诇讗 注讜讘讚转. 7. 讛爪诇讞转讬 诇讬讬砖诐 驻讬转专讜谉 砖注讜讘讚! 8. 讗讛, 讗讘诇 讘注爪诐 讬砖 讗转 诪拽专讛 讛拽爪讛 讛讝讛 砖诇讗 讞砖讘转讬 注诇讬讜. 9. 讬砖 诇讬 专注讬讜谉 讗讬讱 诇转拽谉 讗转 诪拽专讛 讛拽爪讛 讛讘注讬讬转讬. 10. 诪诪砖讬讻讬诐 讗转 8-9 讘诇讜诇讗讛, 诇驻注诪讬诐 讻诪讛 注砖专讜转 驻注诪讬诐. 11. 讬砖 诇讬 拽讜讚 砖注讜讘讚! 12. 诪讛 讛诪砖讬诪讛 讛讘讗讛? 讛专讘讛 驻注诪讬诐 讗谞讞谞讜 专讜爪讬诐 诇讚诇讙 注诇 讛诇讜诇讗讜转 讘-6 讜讘-10, 讜诪讚诪讬讬谞讬诐 砖讗诐 谞爪诇讬讞 诇讛讙讬注 诇-11 讝讛 住讬诪谉 砖诇诪讚谞讜 讗转 讛谞讜砖讗, 诇讗 诪砖谞讛 讗讬讱 讛讙注谞讜 诇砖诐. 讗讘诇 讝讛 诇讗 注讜讘讚 讻讻讛: 注讬拽专 讛诇讬诪讜讚 拽讜专讛 讘转讜讱 讛诇讜诇讗讜转, 讜讘讞讬驻讜砖 讛讗讬谞讟谞住讬讘讬 讗讞专讬 讛专注讬讜谉 讛讘讗.

ToCode
1 419
# 讘砖讘讬诇 诪讛 讗转 讘讜谞讛 讗转 讝讛 讗诐 讛诪讟专讛 砖诇讻诐 讛讬讗 诇讘谞讜转 诪注专讻转 讻讚讗讬 诪讗讜讚 诇讛讬注讝专 讘讗讬砖 诪拽爪讜注. 诇诪专讜转 砖驻讙砖转讬 讛诪讜谉 诪转讻谞转讬诐 砖诪注讚讬驻讬诐 诇诇诪讜讚 诪砖讛讜 讘砖讘讬诇 诇讘谞讜转 讘讝讛 诪注专讻转 - 讻诪注讟 转诪讬讚 讛转讜爪讗讛 讬讜爪讗转 讛专讘讛 讬讜转专 讬拽专讛 讜驻讞讜转 讟讜讘讛 诪诪讛 砖讛讬讬谞讜 诪拽讘诇讬诐 讗诐 讛讬讬谞讜 诇讜拽讞讬诐 讗讬砖 诪拽爪讜注 砖讻讘专 诪讬讜诪谉 讘讟讻谞讜诇讜讙讬讛. 诪爪讚 砖谞讬 讗诐 讛诪讟专讛 讛讬讗 诇诇诪讜讚 诪砖讛讜 讞讚砖 讗讝 讘专讜专 砖讻讚讗讬 诇讘谞讜转 讗转 讛转讜讻谞讛 诇讘讚 讜诇谞住讜转 讻诪讛 砖讬讜转专 专注讬讜谞讜转 讗驻讬诇讜 讛讻讬 讛讝讜讬讬诐 砖讗转诐 讬讻讜诇讬诐 诇讚诪讬讬谉 专拽 讘砖讘讬诇 诇专讗讜转 诪讛 注讜讘讚 讜诪讛 诇讗. 讛转讞诇谞讜 讗转 讛诪住注 讛讝讛 讘砖讘讬诇 诇诇诪讜讚 讜讝讛 讛讜诇讱 诇讛讬讜转 讻讬祝 讘讬谉 讗诐 转讛讬讛 诪注专讻转 讘住讜祝 讜讘讬谉 讗诐 诇讗. 讻砖讛诪讟专讛 讛讬讗 诇讬诪讜讚讬诐 讘专讜专 砖讚讘专讬诐 讛讜诇讻讬诐 诇讛住转讘讱, 讜讘专讜专 砖讻诪讛 砖转砖拽讬注讬 讬讜转专 讝诪谉 讘讛转诪讜讚讚讜转 注诐 讛讛住转讘讻讜讬讜转 讗转 转诇诪讚讬 讟讜讘 讬讜转专. 讛讘注讬讜转 讘讞讬讬诐 诪转讞讬诇讜转 讻砖讗谞讞谞讜 诪转讘诇讘诇讬诐 讘讬谉 讛诪讟专讜转 砖诇谞讜, 讗讜 讻砖讬砖 讛转谞讙砖讜转 讘讬谉 诪讟专讜转. 诇讚讜讙诪讗 - 讻砖讛讘讜住 讗讜诪专 砖爪专讬讱 诇讘谞讜转 诪注专讻转 讞讚砖讛 讜讗谞讞谞讜 专讜爪讬诐 诇诇诪讜讚 专讬讗拽讟. 讛砖讬诇讜讘 诪讬讬爪专 诇讞抓 讘诇转讬 讗驻砖专讬, 诪爪讚 讗讞讚 诇讘谞讜转 讗转 讛诪讜爪专 讛讻讬 诪讛专 砖讗驻砖专 讜诇讛讜讻讬讞 砖讛讘讞讬专讛 砖诇谞讜 讛讬转讛 讟讜讘讛, 讜诪爪讚 砖谞讬 诇诇诪讜讚 转讜讱 讻讚讬 转谞讜注讛 讜诇拽讜讜转 诇拽诇讜注 讘诪讟专讛 讻讘专 诪讛谞讬住讬讜谉 讛专讗砖讜谉. 讬讜转专 拽诇 诇讛住转讻诇 注诇 讛讞讬讬诐 讻诪砖讞拽 诇讟讜讜讞 讗专讜讱: 诇诇诪讜讚 讻诇 讛讝诪谉 讟讻谞讜诇讜讙讬讜转 讞讚砖讜转 注诐 驻专讜讬拽讟讬 爪讚 讜诪注专讻讜转 驻讞讜转 讞砖讜讘讜转, 讜诇讛讬讻谞住 诇讘爪注 驻专讜讬拽讟讬诐 讗诪讬转讬讬诐 讜拽专讬讟讬讬诐 诇讗专讙讜谉 专拽 讘讟讻谞讜诇讜讙讬讜转 砖讻讘专 讛讙注转诐 讗讬转谉 诇专诪转 讘砖诇讜转 诪住讜讬诪转.

ToCode
1 419
# 讗专讘注讛 专注讬讜谞讜转 驻砖讜讟讬诐 诇驻专讜讬拽讟讬诐 讘 Arduino 讛转讙讜讘讛 讛专讗砖讜谞讛 砖讗谞讬 诪拽讘诇 诪讞讘专讬诐 讻砖讗谞讬 诪住驻专 砖拽谞讬转讬 讗专讚讜讜讬谞讜 讛讬讗 住讜讙 砖诇 驻专爪讜祝 讜砖讗诇转 "讜诪讛 讗转讛 讛讜诇讱 诇讘谞讜转 注诐 讝讛?". 讜讬砖 讘讝讛 诪砖讛讜 - 讻诪注讟 讻诇 讚讘专 砖转专爪讛 诇讘谞讜转 诪讬砖讛讜 讻讘专 驻讬转讞 讜诪讜讻专 讚讬 讘讝讜诇. 讛注讜诇诐 谞讛讬讛 讻讝讛 砖讗驻砖专 诇拽谞讜转 讻诪注讟 讻诇 讙讗讚讙'讟 讘讙专讜砖讬诐. 讜讘讻诇 讝讗转 讬砖 讻讬祝 讘诇讘谞讜转 讚讘专讬诐 诇讘讚, 讙诐 讗诐 讛诐 诇讗 专讜讘讜讟讬诐 转诇转 诪讬诪讚讬讬诐 讗讜 讞诇诇讬讜转 砖讟住讜转 诇讬专讞. 讘拽讬爪讜专 讗诐 谞转拽注转诐 注诐 讗专讚讜讜讬谞讜 讜讗转诐 诪讞驻砖讬诐 诪讛 诇注砖讜转 讗讬转讜, 拽讘诇讜 4 专注讬讜谞讜转 驻砖讜讟讬诐 砖诪讜专讻讘讬诐 讗讱 讜专拽 诪谞讜专讜转, 谞讙讚讬诐 讜讻驻转讜专讬诐 讜砖讬注讝专讜 诇讻诐 诇讛转讗诪谉 注诇 转讻谞讜转 讜讙诐 注诇 讞讬讘讜专 诪注讙诇讬诐 讞砖诪诇讬讬诐: ## 拽诇讟 住专讬讗诇讬 诇谞讜专转 Led 爪讘注讜谞讬转 讗诐 讬砖 诇讻诐 谞讜专转 Led 爪讘注讜谞讬转 转讜讻诇讜 诇讘讞讜专 讗转 讛爪讘注 砖诇讛 讘讗诪爪注讜转 讛讝专诪转 讞砖诪诇 诇专讙诇 讛诪转讗讬诪讛 (讬砖 3 专讙诇讬讬诐 砖诪讬讬爪讙讜转 讗转 讻诪讜转 讛讗讚讜诐, 讬专讜拽 讜讻讞讜诇 讘讛转讗诪讛). 讗讞专讬 砖转讞讘专讜 讜转讘讬谞讜 讗讬讱 讝讛 注讜讘讚 谞住讜 讗转 讛转专讙讬诇 讛讘讗: 注讚讻谞讜 讗转 讛转讜讻谞讬转 讻讱 砖转拽讘诇 诪讛拽诇讟 讛住专讬讗诇讬 拽讜讚 爪讘注, 诇诪砖诇 #872213 讜讗讝 转讻讜讜谉 讗转 专诪讜转 讛讗讚讜诐, 讬专讜拽 讜讻讞讜诇 讻讱 砖讬讜爪讙 讛爪讘注 讛诪转讗讬诐. ## 诪转讙 砖诪讞诇讬祝 讘讬谉 4 谞讜专讜转 讬讜讚注讬诐 讗讬讱 诇讛讚诇讬拽 讜诇讻讘讜转 谞讜专转 Led? 诪注讜诇讛, 注讻砖讬讜 拽讞讜 讗转讙专 拽讟谉 谞讜住祝 讜讞讘专讜 4 谞讜专讜转 Led 讜讻驻转讜专 诇 Arduino. 讛讙讚讬专讜 诪砖转谞讛 讘转讜讻谞讬转 砖讬讞讝讬拽 讗转 讛谞讜专讛 砖讻专讙注 讚讜诇拽转 (注专讻讜 讝讝 诪-0 注讚 3 讜讘讞讝专讛 诇-0), 讜讻诇 诇讞讬爪讛 注诇 讛讻驻转讜专 转注诇讛 讗转 讛诪砖转谞讛 讘-1 讜讻讱 转讞诇讬祝 讘讬谉 讛谞讜专讛 砖讻专讙注 讚讜诇拽转. 讝讛 谞砖诪注 驻砖讜讟 讗讘诇 爪专讬讱 诇讝讻讜专 讘讻诇 讛讞诇驻讛 诇讻讘讜转 讗转 讛谞讜专讛 讛拽讜讚诪转 讜诇讟驻诇 讘诪注讙诇讬讜转. 讘讜谞讜住: 讘诪拽讜诐 砖讛谞讜专讛 讛谞讜讻讞讬转 转讚诇讜拽 讻诇 讛讝诪谉 谞住讜 诇讙专讜诐 诇讛 诇讛讘讛讘. ## 诪讜谞讛 诇讞讬爪讜转 讘讬谞讗专讬 讬讜讚注讬诐 诇住驻讜专 讘讘讬谞讗专讬? 讙诐 讛讗专讚讜讜讬谞讜 砖诇讻诐 讬讜讚注. 拽讞讜 讗转 讛诪注讙诇 诪讛驻专讜讬拽讟 讛拽讜讚诐 讜注讚讻谞讜 讗转 讛拽讜讚 讻讱 砖诇讞讬爪讛 注诇 讛讻驻转讜专 转爪讬讙 讘谞讜专讜转 讗转 讛诪住驻专 讛讘讬谞讗专讬 讛讘讗 - 讗驻住 诪讬讜爪讙 注诇 讬讚讬 谞讜专讛 讻讘讜讬讛 讜讗讞讚 注诇 讬讚讬 谞讜专讛 讚讜诇拽转. ## 诪砖讞拽 住讬讬诪讜谉 讛讗讞专讜谉 讘住讬讚专讛 讛讜讗 住讬讬诪讜谉 讻诇讜诪专 诪砖讞拽 讝讬讻专讜谉 诪讘讜住住 谞讜专讜转. 诇讜拽讞讬诐 讗转 4 讛谞讜专讜转 砖讬砖 诇谞讜 讜诪讜住讬驻讬诐 诇讛谉 4 讻驻转讜专讬诐. 讘讻诇 住讬讘讜讘 讛诪讞砖讘 诪讚诇讬拽 讜诪讻讘讛 谞讜专讜转 诇驻讬 住讚专 讗拽专讗讬 (诇诪砖诇 爪讛讜讘, 爪讛讜讘, 讻讞讜诇, 讗讚讜诐) 讜讻砖诪住讬讬诐 诪讙讬注 转讜专 讛砖讞拽谉 诇诇讞讜抓 注诇 讛讻驻转讜专讬诐 砖诪转讗讬诪讬诐 诇谞讜专讜转 砖谞讚诇拽讜. 讬砖 诇讻诐 注讜讚 专注讬讜谞讜转 诇诪砖讞拽讬诐 驻砖讜讟讬诐 讜诪讚诇讬拽讬诐 注诐 讛讗专讚讜讜讬谞讜? 住驻专讜 讘转讙讜讘讜转 讻讚讬 砖讗讜讻诇 诇讘谞讜转 讙诐.

ToCode
1 419
# 讘讜讗讜 谞诪爪讗 住讚专讜转 砖诇 诪住驻专讬诐 注讜拽讘讬诐 讘 Python 讛谞讛 砖讗诇转 专讗讬讜谞讜转 注讘讜讚讛 驻砖讜讟讛 砖谞转拽诇转讬 讘讛 - 谞转讜谉 诪注专讱 砖诇 诪住驻专讬诐 讜讗转诐 爪专讬讻讬诐 诇讻转讜讘 拽讜讚 砖讬诪爪讗 讗转 讛专爪祝 讛讻讬 讗专讜讱 砖诇 诪住驻专讬诐 注讜拽讘讬诐. 诇讚讜讙诪讗 讘诪注专讱 讛讝讛:
arr = [1, 2, 3, 10, 2, 3, 4, 5, 6, 9, 9, 1, 2, 3, 1, 2, 3]
讛讬讬谞讜 专讜爪讬诐 诇讝讛讜转 砖讘讗讬谞讚拽住 4 砖诇 讛诪注专讱 讬砖 专爪祝 砖诇 5 诪住驻专讬诐 注讜拽讘讬诐, 讜讛讜讗 讛讗专讜讱 讘讬讜转专 诪讘讬谉 讛专爪驻讬诐 讘诪注专讱 讝讛. 讻砖讗谞讬 专讜讗讛 讻讗诇讛 砖讗诇讜转 讛讗讬谞讟讜讗讬爪讬讛 讛专讗砖讜谞讛 砖诇讬 讛讬讗 砖讻讚讗讬 诇讛驻专讬讚 讘讬谉 讛诇讜讙讬拽讛 砖诇 "讗讬驻讛 讬砖 专爪驻讬诐" 诇讘讬谉 讛诇讜讙讬拽讛 砖诇 讞讬驻讜砖 专爪祝 讗专讜讱 讘讬讜转专. 讛专讗砖讜谞讛 讻谞专讗讛 住驻爪讬驻讬转 诇砖讗诇讛 讜讘砖讘讬诇 讛砖谞讬讛 讘讟讞 谞讜讻诇 诇讛砖转诪砖 讘诪谞讙谞讜谞讬诐 拽讬讬诪讬诐 砖诇 Python. 讘诪拽专讛 砖诇谞讜 讗驻砖专 诇讞砖讜讘 注诇 讛诪注专讱 讘转讜专 讗讜住祝 砖诇 专爪驻讬诐 砖诇 诪住驻专讬诐 注讜拽讘讬诐 (讞诇拽诐 诪诪砖 拽爪专讬诐). 讘诪注专讱 砖讘讚讜讙诪讗 谞讜讻诇 诇诪爪讜讗 讗转 讛专爪驻讬诐 讛讘讗讬诐 砖诇 诪住驻专讬诐 注讜拽讘讬诐:
(0, 3)
(3, 1)
(4, 5)
(9, 1)
(10, 1)
(11, 3)
(14, 3)
讻诇 专爪祝 诪讝讜讛讛 注诇 讬讚讬 讛讗讬谞讚拽住 讘讜 诪转讞讬诇 讛专爪祝 (讛诪住驻专 讛专讗砖讜谉) 讜讗讜专讱 讛专爪祝 (讛诪住驻专 讛砖谞讬). 讻讱 讛诪注专讱 诪转讞讬诇 讘讗讬谞讚拽住 0 讘专爪祝 砖诇 砖诇讜砖讛 诪住驻专讬诐 注讜拽讘讬诐 - 讛诪住驻专讬诐 1, 2 讜-3 讜讗讞专讬讛诐 讘讗讬谞讚拽住 3 讬砖 诇谞讜 专爪祝 拽爪专 讬讜转专 砖诇 诪住驻专 讬讞讬讚 讛讜讗 讛诪住驻专 10. 诪专讙注 砖讝讬讛讬转讬 砖讬砖 驻讛 讗讜住祝 砖诇 专爪驻讬诐 讗谞讬 讬讻讜诇 诇拽讜讚讚 讗转 讛诇讜讙讬拽讛 砖诪讞驻砖转 讻讗诇讛 专爪驻讬诐 诇驻讜谞拽爪讬讛 诪住讜讙 Generator, 讘讜讗讜 谞拽专讗 诇讛 consecutives. 诪讬诪讜砖 注砖讜讬 诇讛讬专讗讜转 讻讱:
def consecutives(arr):
    start = 0
    i = start
    while i < len(arr) - 1:
        if arr[i] + 1 == arr[i + 1]:
            i += 1
        else:
            yield(start, i - start + 1)
            start = i + 1
            i = start
    yield(start, i- start + 1)
讜讗讞专讬 砖讬砖 诇谞讜 讗转 讛驻讜谞拽爪讬讛 拽诇 诇诪爪讜讗 讗转 讻诇 讛专爪驻讬诐 注诐 诇讜诇讗转 for 专讙讬诇讛:
for seq in consecutives(arr):
    print(seq)
讗讜 诇诪爪讜讗 讗转 讛专爪祝 讛讻讬 讗专讜讱 注诐 驻讜谞拽爪讬讬转 max:
print(max(consecutives(arr), key=lambda s: s[1]))
讗讜 诇诪爪讜讗 讗转 讛专爪祝 砖住讻讜诐 讛讗讬讘专讬诐 讘讜 讛讜讗 讛讙讚讜诇 讘讬讜转专 (砖讜讘 注诐 max):
print(max(consecutives(arr), key=lambda s: sum(arr[s[0]:s[0]+s[1]])))
讜讛转讘谞讬转 砖讻讚讗讬 诇讝讻讜专 诪讻讗谉 - 讛专讘讛 驻注诪讬诐 砖讜讜讛 诇谞讜 诇讛转讗诪抓 诇砖谞讜转 拽爪转 讗转 讛讘注讬讛 讻讚讬 砖谞讜讻诇 诇驻转讜专 讗讜转讛 讘讻诇讬诐 砖讗谞讞谞讜 讻讘专 诪讻讬专讬诐.

ToCode
1 419
# 讛讬讜诐 诇诪讚转讬: 诇诪讛 讞砖讜讘 诇讻转讜讘 distinct 讻砖住讜驻专讬诐 讘 SQL 讛驻讜住讟 讛讘讗 讛讜讗 讬讜转专 转讝讻讜专转 讘砖讘讬诇讬 诪讗砖专 讘砖讘讬诇讻诐, 诇诪专讜转 砖讗诐 讗转诐 讻讜转讘讬诐 SQL 讬讻讜诇 诇讛讬讜转 砖讙诐 诇讻诐 讝讛 讬讘讜讗 讘讛驻转注讛. 诪住转讘专 砖讛砖讗讬诇转讛 讛讘讗讛 诇讗 注讜讘讚转 讟讜讘 讘讻诇诇:
SELECT  courses.*, count(lessons.id) as lessons_count,
    count(course_labels.id) as labels_count
    FROM "courses"
    LEFT OUTER JOIN "course_labels" ON "course_labels"."course_id" = "courses"."id"
    LEFT OUTER JOIN "lessons" ON "lessons"."course_id" = "courses"."id"
    GROUP BY courses.id
住讬驻讜专 讛专拽注 讛讜讗 砖讬砖 诇谞讜 讟讘诇转 拽讜专住讬诐, 讟讘诇转 砖讬注讜专讬诐 讜讟讘诇转 转讜讜讬讜转. 讘讻诇 拽讜专住 讬砖 讛专讘讛 砖讬注讜专讬诐 讜诇讻诇 拽讜专住 讬砖 讙讬砖讛 诇讛专讘讛 转讜讜讬讜转 讚专讱 讟讘诇转 讞讬讘讜专 讘砖诐 course_labels. 讛诪讟专讛 砖诇 讛砖讗讬诇转讛 讛讬讗 诇讛讜爪讬讗 讘诪讻讛 讗讞转 讗转 讻诇 讛拽讜专住讬诐, 讬讞讚 注诐 诪住驻专 讛转讜讜讬讜转 砖讬砖 诇讻诇 拽讜专住, 讬讞讚 注诐 诪住驻专 讛砖讬注讜专讬诐 砖讬砖 讘讻诇 拽讜专住. 讛讘注讬讛 注诐 讛砖讗讬诇转讛 讛讬讗 砖讛 join 讛讻驻讜诇 讙讜专诐 诇砖讻驻讜诇 砖诇 讻诇 讛砖讜专讜转 讘讟讘诇讛 讛砖谞讬讛 - 讘诪讬诇讬诐 讗讞专讜转 讻讱 谞专讗讬转 讛转讜爪讗讛 讻砖讗谞讬 诪讜专讬讚 讗转 讛 count 讜讛 group by:
sqlite> SELECT courses.id, lessons.id as lessons_count, course_labels.id as labels_count_1 FROM "courses" LEFT OUTER JOIN "course_labels" ON "course_labels"."course_id" = "courses"."id" LEFT OUTER JOIN "lessons" ON "lessons"."course_id" = "courses"."id";
id|lessons_count|labels_count_1
1|1|6
1|2|6
1|3|6
1|5|6
2|4|
3||
讛 id 砖诇 讛 course_label 讛讬讞讬讚 讘诪注专讻转 讛讘讚讬拽讛 砖诇讬 讛讜讗 6, 讜讛讜讗 诪讜驻讬注 4 驻注诪讬诐 讻讚讬 诇讛转讗讬诐 诇-4 砖讬注讜专讬诐 砖讬砖 讘拽讜专住. 讛驻讬转专讜谉 讘诪拽专讛 砖诇 住驻讬专讛 讛讜讗 诪诪砖 驻砖讜讟 讜诪讜专讻讘 诪讛诪讬诇讛 讛讬讞讬讚讛 distinct. 讛谞讛 讛砖讗讬诇转讛 讛诪转讜拽谞转:
SELECT 
    courses.*,
    count(distinct lessons.id) as lessons_count,
    count(distinct course_labels.id) as labels_count_1
FROM "courses"
    LEFT OUTER JOIN "course_labels" ON "course_labels"."course_id" = "courses"."id"
    LEFT OUTER JOIN "lessons" ON "lessons"."course_id" = "courses"."id"
GROUP BY courses.id

ToCode
1 419
# 拽讜讚 讞讻诐 诪讚讬. 拽讜讚 讟讬驻砖 诪讚讬. 拽讜讚 讞讻诐 诪讚讬 注讜砖讛 讗转 讛注讘讜讚讛 讗讘诇 爪专讬讱 诇讛讻讬专 讬讜转专 诪讚讬 讚讘专讬诐 讘砖讘讬诇 诇讛讘讬谉 讗讜转讜 讜讛专讘讛 讗谞砖讬诐 诇讗 讬爪诇讬讞讜 诇转讞讝拽 讗讜转讜. 讚讜讙诪转 专讬讬诇住 拽爪专讛 诪拽讜专住 砖讛注讘专转讬 讛讬讜诐 讻诇诇讛 讟讘诇讗 砖诇 诪砖转诪砖讬诐, 讟讘诇讗 砖诇 拽讜专住讬诐 讜讟讘诇讗 砖诇 砖讬注讜专讬诐. 讻诇 砖讬注讜专 砖讬讬讱 诇拽讜专住 讜讻诇 拽讜专住 砖讬讬讱 诇诪砖转诪砖. 讛砖讗诇讛 讛讬转讛 诇诪爪讜讗 讗转 专砖讬诪转 讛砖讬注讜专讬诐 砖诇 诪砖转诪砖 诪住讜讬诐, 讜讛转砖讜讘讛 讛讞讻诪讛 诪讚讬 谞专讗讬转 讻讱:
Lesson.joins(course: :user).select('lessons.*', 'users.id as user_id').where('user_id = ?', user.id)
讘砖讘讬诇 诇讛讘讬谉 讗转 讛拽讜讚 爪专讬讱 诇讛讻讬专 诪住驻讬拽 讟讜讘 讗转 joins 讘砖讘讬诇 诇讛讘讬谉 砖讬砖 驻讛 join 砖诇 砖诇讜砖 讟讘诇讗讜转. 谞讻讜谉 砖讝讛 诪讗讜讚 讙谞专讬 讜讗驻砖专 讛讬讛 讘拽诇讜转 诇讘讞讜专 讻讗谉 诪砖转诪砖讬诐 讙诐 讘讛转讘住住 注诇 转谞讗讬诐 讗讞专讬诐, 讗讜 讗驻讬诇讜 诇住谞谉 诇驻讬 驻专讟讬诐 砖诇 讛拽讜专住, 讗讘诇 讻诇 讛讞讜讻诪讛 讛讝讗转 诇讗 拽砖讜专讛 诇砖讗诇讛. 讙讬砖讛 讛专讘讛 讬讜转专 诪讚讜讬拽转 转讬专讗讛 讻讱:
Lesson.where(course: user.courses)
拽讜讚 讟讬驻砖 诪讚讬 注讜砖讛 讗转 讛注讘讜讚讛 讻诪讜 砖爪专讬讱 讗讘诇 诇讗 诪讻住讛 讗转 讻诇 讛诪拽专讬诐. 讛讘讬讟讜讬 讛专讙讜诇专讬 讛讘讗 讛讜讗 讚专讱 讟讬驻砖讛 诪讚讬 讻讚讬 诇讝讛讜转 讗诐 诪讬诇讛 诪转讞讬诇讛 讘讗讜转 讙讚讜诇讛 (砖讜讘 讘专讜讘讬, 诇诪专讜转 砖讘讬讟讜讬讬诐 专讙讜诇讗专讬讬诐 注讜讘讚讬诐 讘讻诇 讛砖驻讜转):
word =~ /^[A-Z]/
讝讛 注讜讘讚 注讘讜专 诪讬诇讬诐 讘讗谞讙诇讬转, 讗讘诇 诇讗 诪讻住讛 讗转 讻诇 讛诪拽专讬诐 讜讬驻讜诇 讻砖谞注讘讜专 诇砖驻讛 讗讞专转. 拽讜讚 诪讚讜讬拽 讬讜转专 谞专讗讛 讻讱:
word =~ /^\p{Lu}/
讜讛讘注讬讛 注诐 拽讜讚 砖讛讜讗 诪讚讘拽: 讻砖讬砖 诇讻诐 拽讜讚 讟讬驻砖 诪讚讬 讘诪注专讻转 讗转诐 谞讜讟讬诐 诇讛讙讬讚 砖诪诪讬诇讗 讛诪注专讻转 诇讗 诪讟驻诇转 讘诪拽专讬诐 诪住讜讬诪讬诐 讗讝 讗驻砖专 诇讛诪砖讬讱 诇讻转讜讘 拽讜讚 讟讬驻砖 砖诪转注诇诐 诪讗讜转诐 讛诪拽专讬诐 讙诐 讘诪拽讜诪讜转 讗讞专讬诐, 讜讻砖讬砖 诇讻诐 拽讜讚 讞讻诐 诪讚讬 讘诪注专讻转 讗转诐 诇讗 诪讘讬谞讬诐 讗讜转讜 讜驻砖讜讟 诪注转讬拽讬诐 讗讜转讜 诇注讜讚 诪拽讜诪讜转 砖爪专讬讻讬诐 讚讘专讬诐 讚讜诪讬诐 讘砖讬谞讜讬讬诐 拽讟谞讬诐. 讙诐 讗诐 讛拽讜讚 注讜讘讚 - 讻砖讛讜讗 讟讬驻砖 诪讚讬, 讗讜 讞讻诐 诪讚讬, 砖讜讜讛 诇讛转讗诪抓 讜诇转拽谉.

ToCode
1 419
# 讜诪讛 转注砖讛 讻砖讝讛 谞砖讘专? 讬砖 爪讬讟讜讟 诪驻讜专住诐 砖讛讗讬谞讟专谞讟 讟讜注谉 砖讛讙讬注 诪讜讜专谉 讘讗驻讟 诇驻讬讜 "专拽 讘砖驻诇 讗驻砖专 诇讙诇讜转 诪讬 砖讜讞讛 讘诇讬 讘讙讚 讬诐". 讛讗谞诇讜讙讬讛 (讗诐 讛讘谞转讬 谞讻讜谉 讗转 讛诪砖驻讟) 讛讬讗 诇注讜诇诐 讛讛砖拽注讜转 砖诐 讻砖讛讻诇 讛讜诇讱 讟讜讘 讻讜诇诐 诪专讜讜讬讞讬诐 讗讘诇 专拽 讻砖讛讘讜专住讛 谞讜驻诇转 谞讜讻诇 诇讙诇讜转 诪讬 讘讗诪转 诪谞讛诇 谞讻讜谉 讗转 讛讻住祝 砖诇讜. 住讬驻讜专 讚讜诪讛 讗驻砖专 诇住驻专 讙诐 注诇 拽讜讚 - 讛专讘讛 讗谞砖讬诐 讬讜讚注讬诐 诇诇讻转 诇驻讬 Tutorials 讘专砖转, 讜讬砖 讗驻讬诇讜 诇讗 诪注讟 讗谞砖讬诐 砖讬爪诇讬讞讜 诇讘谞讜转 诪注专讻转 讻砖讛讻诇 讛讜诇讱 诇驻讬 讛转讜讻谞讬转, 讗讘诇 讛讻讬祝 讛讗诪讬转讬 拽讜专讛 讻砖讚讘专讬诐 诇讗 注讜讘讚讬诐 讻诪讜 砖讻转讜讘 讘住驻专. 讛讚讘专 讛专讗砖讜谉 砖讻讜诇诐 注讜砖讬诐 讻砖诪讙讬注讬诐 诇砖讙讬讗讛 砖讗祝 驻注诐 诇讗 专讗讬谞讜 讛讜讗 诇讛注转讬拽 讗转 讛砖讙讬讗讛 诇讙讜讙诇 讜诇拽讜讜转 砖诪讬砖讛讜 讘 Stack Overflow 驻转专 讗讜转讛. 讛讻讬祝 讛讗诪讬转讬 讛讜讗 讛诪讞拽专 砖拽讜专讛 讗讞专讬: 讘诪拽讜诐 诇谞住讜转 诇讝专讜拽 注诇 讛讘注讬讛 砖诇讻诐 讗转 讻诇 讛驻讬转专讜谞讜转 砖诪爪讗转诐 讘 Stack Overflow 讜诇拽讜讜转 砖讗讞讚 诪讛诐 讬注讘讜讚, 注讚讬祝 诇讛转讬讞住 诇讻诇 驻讬转专讜谉 讘转讜专 爪讬讜谉 讚专讱 讗讜 专诪讝, 诇拽专讜讗 讜诇诇诪讜讚 讬讜转专 讟讜讘 诪讛 讛讘注讬讛 砖讛讻讜转讘 谞转拽诇 讘讛 讜讛讗诐 讛讬讗 讚讜诪讛 诇讘注讬讛 砖诇讻诐, 讜讗讬讱 讛驻讬转专讜谉 讛诪讜爪注 驻讜转专 讗转 讛讘注讬讛 讛讛讬讗. 讛诪转讻谞转讬诐 讛讻讬 讟讜讘讬诐 砖讗谞讬 诪讻讬专 诪讞驻砖讬诐 讘谞专讜转 讗转 讛诪拽讜诪讜转 讛讗诇讛 砖讛拽讜讚 谞砖讘专 讗讜 砖讚讘专讬诐 诇讗 讘专讜专讬诐 拽讜专讬诐 - 讗诇讛 讛讛讝讚诪谞讜讬讜转 讛讻讬 讟讜讘讜转 砖诇谞讜 诇诇诪讜讚 讬讜转专 诇注讜诪拽 注诇 讛诪注专讻转.

ToCode
1 419
# 诪砖转谞讬诐 讘 Ruby 砖讗驻砖专 诇讙砖转 讗诇讬讛诐 诪讻诇 诪拽讜诐 砖驻转 专讜讘讬 诪爪讬注讛 3 讚专讻讬诐 诇讬讬爪专 诪砖转谞讛 讙诇讜讘讗诇讬 - 讻诇讜诪专 诪砖转谞讛 砖讗驻砖专 诇讙砖转 讗诇讬讜 诪讻诇 诪拽讜诐 讘转讜讻谞讬转. 讛谞讛 讛-3 讘拽爪专讛 注诐 讛爪注讛 诪转讬 诇讛砖转诪砖 讘讻诇 讚专讱. ## 拽讘讜注讬诐 讘讻诇 诪拽讜诐 讘转讜讻谞讬转 专讜讘讬 转讜讻诇讜 诇讛讙讚讬专 拽讘讜注, 讜讛拽讘讜注 砖诇讻诐 讬讛讬讛 谞讙讬砖 诪讻诇 诪拽讜诐 讗讞专 讘转讜讻谞讬转. 讻砖诪讙讚讬专讬诐 拽讘讜注 讘转讜讱 拽诇讗住 讜专讜爪讬诐 诇讙砖转 讗诇讬讜 诪讘讞讜抓 注诇讬讻诐 诇爪讬讬谉 讗转 砖诐 讛拽讘讜注 讛诪诇讗 讻诇讜诪专 讗转 砖诐 讛拽诇讗住 讘转讜讻讜 讛讜讗 诪讜讙讚专, 讗讞专讬讜 驻注诪讬讬诐 谞拽讜讚讜转讬讬诐 讜讗讝 砖诐 讛拽讘讜注. 拽讘讜注 讘 Ruby 谞专讗讛 讻诪讜 诪砖转谞讛 讗讘诇 诪转讞讬诇 讘讗讜转 讙讚讜诇讛, 诇诪专讜转 砖讘讚专讱 讻诇诇 谞讻转讜讘 讗转 讻诇 砖诐 讛拽讘讜注 讘讗讜转 讙讚讜诇讛. 专讜讘讬 注爪诪讛 诇讗 注讜砖讛 诪讗诪抓 讻讚讬 诇诪谞讜注 诪讻诐 诇砖谞讜转 拽讘讜注 (讜讘讙诇诇 讝讛 讛砖诐 拽爪转 诪讘诇讘诇), 讗讘诇 讗谞讞谞讜 诪转讻谞转讬诐 讟讜讘讬诐 讜诇讻谉 谞砖转讚诇 诇讗 诇砖谞讜转 拽讘讜注讬诐. 讛转讜讻谞讬转 讛讘讗讛 诪讙讚讬专讛 拽讘讜注 诪讞讜抓 诇驻讜谞拽爪讬讛 讜谞讬讙砖转 讗诇讬讜 诪转讜讱 讛驻讜谞拽爪讬讛:
PASSWORDS = {
    'one' => 'secret',
    'two' => 'number'
}

def check_password(username, password)
  PASSWORDS.key?(username) && PASSWORDS[username] == password
end
## 诪砖转谞讬诐 讙诇讜讘讗诇讬讬诐 讗诐 讛转讞砖拽 诇讻诐 诇砖谞讜转 讗转 讛拽讘讜注讬诐 砖诇讻诐 转砖诪讞讜 诇砖诪讜注 砖诇专讜讘讬 讬砖 转诪讬讻讛 讘诪谞讙谞讜谉 砖谞拽专讗 诪砖转谞讬诐 讙诇讜讘讗诇讬讬诐 讗讘诇 讗祝 讗讞讚 诇讗 讘讗诪转 诪砖转诪砖 讘讜. 诪砖转谞讛 讙诇讜讘讗诇讬 讘专讜讘讬 诪转讞讬诇 讘住讬诪谉 讚讜诇专, 讗驻砖专 诇讛讙讚讬专 讗讜转讜 讘讻诇 诪拽讜诐 讘转讜讻谞讬转 讜诇讛砖转诪砖 讘讜 诪讻诇 诪拽讜诐 讗讞专. 诪注讟 讛砖讬诪讜砖讬诐 讘诪砖转谞讬诐 讗诇讛 讛诐 讘诪砖转谞讬诐 讛讙诇讜讘讗诇讬讬诐 砖诇 讛砖驻讛 注爪诪讛, 诇讚讜讙诪讗 讛诪砖转谞讛 $_ 讬拽讘诇 讘爪讜专讛 讗讜讟讜诪讟讬转 诪 gets 讻诇 驻注诐 砖讛讬讗 诪讜驻注诇转 讗转 讛注专讱 讛讗讞专讜谉 砖讛讬讗 拽专讗讛 诪讛诪砖转诪砖. 讛转讜讻谞讬转 讛讘讗讛 诪讙讚讬专讛 诪砖转谞讛 讙诇讜讘讗诇讬 讘专讜讘讬 讜诪砖谞讛 讗讜转讜 诪转讜讱 驻讜谞拽爪讬讛:
$count = 0

def tick
  $count += 1
end

tick
tick
tick
puts $count
讜讛转讜讻谞讬转 讛讘讗讛 谞注讝专转 讘 $_ 讻讚讬 诇讞住讜讱 诪砖转谞讛:
while gets
  next if /^d/
  print
end
讛转讜讻谞讬转 转讚驻讬住 讗转 讻诇 讛砖讜专讜转 驻专讟 诇讗诇讛 砖诪转讞讬诇讜转 讘 d: 转讞讬诇讛 讛讬讗 诇讜拽讞转 讟拽住讟 诪讛诪砖转诪砖 讘讗诪爪注讜转 gets. 讛讟拽住讟 讬讬砖诪专 讗讜讟讜诪讟讬转 讘诪砖转谞讛 讛讙诇讜讘讗诇讬 $_, 诇讗讞专 诪讻谉 讛讬讗 讘讜讚拽转 讗诐 $_ 诪转讗讬诐 诇讘讬讟讜讬 讛专讙讜诇专讬 (讜讗诐 讻谉 诪讚诇讙转 诇拽专讜讗 注讜讚 砖讜专讛) 讜诇讘住讜祝 诪讚驻讬住讛 讗转 转讜讻谉 讛诪砖转谞讛 $_. 讜讻谉 讗诐 讝讛 谞砖诪注 诇讻诐 拽爪转 讻诪讜 讛砖专讗讛 诪驻专诇 讗转诐 讻谞专讗讛 爪讜讚拽讬诐. ## 诪砖转谞讬 诪讞诇拽讛 讛讚专讱 讛砖诇讬砖讬转 讜讛诪拽讜讘诇转 讘讬讜转专 诇砖诪讜专 诪讬讚注 讙诇讜讘讗诇讬 讛讬讗 讘讗诪爪注讜转 诪砖转谞讬 诪讞诇拽讛, 诪讛 砖拽讜专讗讬诐 讘诪拽讜诪讜转 讗讞专讬诐 诪砖转谞讬诐 住讟讟讬讬诐. 讛谞讛 讙讬专住讗 谞讜住驻转 诇拽讜讚 砖住讜驻专 讻诪讛 驻注诪讬诐 驻讜谞拽爪讬讛 讛讜驻注诇讛 讛驻注诐 注诐 诪砖转谞讛 诪讞诇拽讛:
class Ticker
  @count = 0

  class << self
    attr_accessor :count
  end
end

def tick
  Ticker.count += 1
end

tick
tick
tick
puts Ticker.count
诪讘谞讛 讝讛 谞讜转谉 诇谞讜 讗转 讛砖诇讬讟讛 讛讟讜讘讛 讘讬讜转专 讘拽讜讚: 讘诪讬讚转 讛爪讜专讱 谞讜讻诇 诇讻转讜讘 诇讘讚 讗转 驻讜谞拽爪讬讜转 讛 Setter 讜讛 Getter 讜诇砖诇讜讟 讘讙讬砖讛 诪讘讞讜抓 诇诪砖转谞讬诐 讛讙诇讜讘讗诇讬讬诐 砖诇谞讜. 讘谞讜住祝 讛注讜讘讚讛 砖讻诇 诪砖转谞讛 诪拽讘诇 转讞讬诇讬转 砖诇 砖诐 讛诪讞诇拽讛 砖拽砖讜专讛 讗诇讬讜 注讜讝专转 诇住讚专 讗转 讛诪砖转谞讬诐 讘转讜讱 讛转讜讻谞讬转.