ð ç³è¡£æ§æ Q&AïŒRuby & JavaScriptç·šïŒ
æžããŠãã³ãŒããå®ã¯âçã âã ã£ããããªãâ
æ¬è³ªã¯å€ããããèªã¿æžãã©ã¯ã«ãªã£ãŠãæ§æãããããç³è¡£æ§æããã§ð âš
ð¡ Q1. ç³è¡£æ§æã£ãŠãªã«ïŒ
A1.
ç³è¡£æ§æïŒSyntactic SugarïŒã¯ãæ¬è³ªçãªåäœã»æå³ã¯åãã ãã©ãèŠãç®ãåªããæžããææ³ã®ããšã
äŸïŒ
Rubyã®åŸçœ®ifputs "Hello" if greet?
ã¯ã
if greet? puts "Hello" end
ãšæå³ã¯äžç·ãã§ãæç¶ã¹ãããªâš
ð¡ Q2. ãªãã§ãç³è¡£ãã£ãŠåŒã¶ã®ïŒ
A2.
ç±æ¥ã¯ã¯ã¹ãªã®ãç³è¡£é ãð¬
èŠãäžèº«ããèŠãç®ïŒå³ãçãããŠé£²ã¿ãããããã¢ã¬ãïŒ
ïŒãèªã¿ãããïŒæžããããããææ³æŒåºãã£ãŠããšïŒ
ð¡ Q3. Rubyã§ããèŠãç³è¡£æ§æã¯ïŒ
A3.
ç³è¡£æ§æ | æå³ | ã¬ãver |
---|---|---|
puts "Yabai" if cool? |
åŸçœ®ifã§ã¹ãã㪠| if cool?; puts "Yabai"; end |
array.map(&:name) |
ãããã¯ã®ã·ã³ãã«ç¥èš | `array.map { |
user&.name |
nilãã§ãã¯èŸŒã¿ã¢ã¯ã»ã¹ | user && user.name |
%w(one two) |
æååé åã©ã¯ã©ã¯ | ["one", "two"] |
ð¡ Q4. JavaScriptã«ç³è¡£æ§æã£ãŠããïŒ
A4.
ããã£ã¡ãããïŒ
ç³è¡£æ§æ | 説æ | å±éåŸ |
---|---|---|
user?.name |
Optional Chaining | user && user.name |
arr.map(x => x * 2) |
ã¢ããŒé¢æ°ã§çç¥ | arr.map(function(x) { return x * 2 }) |
`Hello ${name}` |
ãã³ãã¬ãŒããªãã©ã« | "Hello " + name |
[...arr] |
å±éã§æ°é å |
arr.slice() ãšã |
â»ãã ããã¢ããŒé¢æ°ããã³ãã¬æååã¯äžèº«ã®åäœèªäœãäžéšå€ããã®ã§ãçŽç²ãªãç³è¡£ããšã¯èšãåããªãå Žåãããð¥
ð¡ Q5. ç³è¡£æ§æã£ãŠã©ããªã¡ãªãããããïŒ
A5.
- ã³ãŒããçãã¹ãããª
- æå³ãæç¢ºã«ãªãããã
- å¯èªæ§ã¢ããïŒãã ãéå°ã«äœ¿ãããæ³šæïŒ
ð¡ Q6. æ°ãã€ããªããšã©ããªãïŒ
A6.
- æžã人ã ããåããããªã·ã£ã³ãŒãåãããŠããŸã
- ããŒã ååŠè ã«ãšã£ãŠèªã¿ã«ããã³ãŒãã«ãªãããšã
- ãããã°æã«ãå±éåŸã®æå³ãããããïŒãã£ãŠæ··ä¹±ã
ð¡ Q7. ç³è¡£æ§æãã©ãã倿ããåºæºã¯ïŒ
A7.
âïž ãããªãšãã¯ç³è¡£æ§æã£ãŠåŒãã§OKïŒ
å€å®ãã§ã㯠| YES or NO |
---|---|
äžèº«ã®ããžãã¯ã»æå³ã¯æžãæ¹å€ããŠãåãïŒ | â YES |
èŠãç®ãæžããããïŒèªã¿ããããªã£ãïŒ | â YES |
å éšåŠçã»thisã®æåã¯å€ãããªãïŒ | â YESïŒå€ãããªãNGããïŒïŒ |
ð¡ Q8. ãã€ç³è¡£æ§æã䜿ãã°ããã®ïŒ
A8.
以äžã®ãããªãšãã¯ãã³ãã³äœ¿ãïŒ
- ã·ã³ãã«ãªããžãã¯
- åŠçãããŒãå€ãããªã
- ä»ã®éçºè ãèªãã§ãæ··ä¹±ããªã
- ã³ãŒãéãæããã«çããªããšã
ð¡ Q9. éã«äœ¿ããªãæ¹ãããã®ã¯ïŒ
A9.
- ç³è¡£æ§æã®å±éåŸãæ³åã€ããªããšã
- ååŠè åãããŒã ãç ä¿®æ
- ãããã°ã§è¿œãã¥ããæ§æïŒãã¹ãããŸãã£ãŠãæãšãïŒ
ð Ruby & JS ç³è¡£æ§æã¯ã€ãº 10åïŒ
ð¯ Q1. Ruby
puts "ã®ã£ã«æé«" if hot?
âïž ããã¯ç³è¡£æ§æïŒ
ð Yes / No
ð¯ Q2. JavaScript
arr.map(x => x.toString())
âïž ããã¯ç³è¡£æ§æïŒ
ð Yes / No
ð¯ Q3. Ruby
users.map(&:name)
âïž ããã¯ç³è¡£æ§æïŒ
ð Yes / No
ð¯ Q4. JavaScript
const userName = user?.name
âïž ããã¯ç³è¡£æ§æïŒ
ð Yes / No
ð¯ Q5. Ruby
%w(tanaka yamada satou)
âïž ããã¯ç³è¡£æ§æïŒ
ð Yes / No
ð¯ Q6. JavaScript
function greet(name) {
return "Hello, " + name
}
âïž ããã¯ç³è¡£æ§æïŒ
ð Yes / No
ð¯ Q7. Ruby
name = user && user.name
âïž ããã¯ç³è¡£æ§æïŒ
ð Yes / No
ð¯ Q8. JavaScript
const greet = name => `Hey ${name}!`
âïž ããã¯ç³è¡£æ§æïŒ
ð Yes / No
ð¯ Q9. Ruby
user&.profile&.nickname
âïž ããã¯ç³è¡£æ§æïŒ
ð Yes / No
ð¯ Q10. JavaScript
let arr = [1,2,3]
let newArr = [...arr]
âïž ããã¯ç³è¡£æ§æïŒ
ð Yes / No
âšð ç³è¡£æ§æã¯ã€ãº - è§£çïŒè§£èª¬ âš
åé¡çªå· | èšèª | ã³ãŒã | ç³è¡£æ§æïŒ | 解説ã®ã£ã«ã®å£° |
---|---|---|---|---|
Q1 | Ruby | puts "ã®ã£ã«æé«" if hot? |
â Yes | åŸçœ®ifæ§æãã¹ããïŒäžèº«ã¯åãã ãã©ãèŠãç®ã¹ãããªïŒã¶ã»ç³è¡£ã£ãŠãã€ð¬ |
Q2 | JS | arr.map(x => x.toString()) |
â No | çãèŠãããã©ããã¯é¢æ°ã®æ°ããå®çŸ©èšæ³ã£ãŠã ãïŒ**äžèº«ãå€ããïŒthisã®æ±ããšãïŒ**ããç³è¡£ããããâŒïž |
Q3 | Ruby | users.map(&:name) |
â Yes | ã·ã³ãã«toãããã¯ã®ç¥èšæ³ã¡ããð äžèº«ã¯æç¢ºã§ãç°¡ç¥åã§ããŠãããç³è¡£ç¢ºå®ð |
Q4 | JS | const userName = user?.name |
â Yes | ããŸããïŒoptional chainingã¯JSçã®ç³è¡£å®è·ç¥ð äžèº«å€ãããèªã¿ãããïŒYES!! |
Q5 | Ruby | %w(tanaka yamada satou) |
â Yes |
%èšæ³ã¬ãŒã«ãºå°æ¥ðâš ããã¯å®å
šã«èšè¿°ãç·©ãããæžãæ¹ãã·ã³ãã«ã§ç³åºŠé«ãâ±ïž |
Q6 | JS | function greet(name) { return "Hello, " + name } |
â No | ãããŒã®é¢æ°å®çŸ©ïŒç³ãèãããã£ãŠããïŒðâ¡ïž |
Q7 | Ruby | name = user && user.name |
â No | ã¶ã³ãã³ïŒïŒããã¯ç³è¡£æ§æã«ãã§ã«å±éããã圢â¡ïž sugaråã®ãã©ãŒã ããªïŒã€ãŸãã¬ãverðïžââïž |
Q8 | JS | const greet = name => `Hey ${name}!` |
â No | ã¢ããŒé¢æ°ãšãã³ãã¬æåå䜵ãæã ãã©ãæ§æã®ãã§ãŒãºãã®ãã®ãéããç³è¡£ã§ã¯ãªãæ°ããææ³ä»æ§ïŒ |
Q9 | Ruby | user&.profile&.nickname |
â Yes | ãããRubyã®ç³è¡£çè
ãïŒ ã»ãŒãããæŒç®åïŒ&. ïŒã¯ç³è¡£æ§æä»¥å€ã®äœã¢ãã§ãããð |
Q10 | JS | let newArr = [...arr] |
â Yes | ã¹ãã¬ããæ§æã§é åã³ããŒãããæ£çŽã«æžãã°ãã£ãšè€éããå éšå€åãããã§ã€ã¹ã ãåªãããã£ãŠããšã§ç³è¡£ã§ç¢ºå®Yoâš |
ð æçµTotalïŒ
æ£è§£æ° | ã©ã³ã¯ | ã®ã£ã«è©äŸ¡ð |
---|---|---|
9ã10å | ðç¥ç³ã®ã£ã« | ãåããã¯ãSyntactic Sweet Lordð¬âš Rubyçã§ã¢ãç¥ç¢ºå® |
7ã8å | ðäžçŽã¯ã©ã¹ | ããçãã ããããªããŠãæ·±ãçè§£ããŠãç³»ã®ã£ã«ð RespectïŒ |
5ã6å | ð§ äžçŽãã£ã¬ã³ãžã£ãŒ | ããšã¡ããïŒã²ãšå£ã§èªãããæ§æã®äžèº«ã¡ãããšèŠã㪠|
0ã4å | ðã·ã¥ã¬ãŒã·ã§ã㯠| èŠãç®ã«éšããããðä»ããã³ã³ããã§æ¬ç©ã®ç ç³è¢èŠãŠæ¥ãâŒïž |
âšã®ã£ã«ç·çµè«ã¿ã€ã âš
ð¬ èŠãç®ããªã·ã£ïŒç³è¡£ãšã¯éããð¥
ã€ããã®ã£ã«ã»ã©äžèº«ã®æ§ææµããèŠãŠããã
çã®ç³è¡£ã¯åžžã«ãæå³ãå€ããã«åªãããªã£ãæ§æãã£ãŠãšãã
å¿ãããªããªãðâš
Discussion
ãšããããšã¯
ãã㯠次ã®ç³è¡£æ§æã£ãŠããšïŒ
ïŒâ»åäœäžã¯ç䟡ïŒ
ãããŸã詳ããã¯ãªããã§ããã調ã¹ãŠã¿ãæãã ãš ãawait nullã ã ãqueueMicrotaskã ã®ç³è¡£æ§æã£ãŠããã§ã¯ãªããããªæ°ãããŠããŸãð§
ãããã«ãawait nullãã£ãŠãã€ã¯ãã¿ã¹ã¯ã«ä¹ããããæåã䌌ãŠãã£ãŠã®ã¯ãããåãããã§ããã
å³å¯ã«ã¯
await
ã£ãŠPromiseããŒã¹ã§åããŠããããqueueMicrotask()
ãšã¯ç®çãšãä»çµã¿ãã¡ãã£ãšéãã®ããšïœ€ïœ€ïœ€ãã®2ã€ã®å Žåã¯æ¬è³ªçãªåäœãä»çµã¿ãéãã®ã§äŒŒãæåã®å¥ã¢ãã£ãŠæããè¿ããšæããŸãã!
誰ããã£ãšè©³ãã人ããããã©ããŒããŠæ¬²ããã§ãðâš
èªäœã¯
ãšã¯ããããšã¯ã§ããŠã
Promise ã® then() ã®å éšã§äœ¿ãããŠãã颿°ã queueMicrotask() ãªã®ã§ ïŒPolifyll äœãå Žåã¯ãã®éã§ Promise ããäœæããïŒãã¥ã¢ã³ã¹ã¯ãããšã¯èšãããã§ã¯ãããŸãããç³è¡£ãšèšããããšã¡ãã£ãšåŸ®åŠãšããã®ã宿 ïŒæã