æçµæŽæ°æ¥: 2024/2/25 åæ: https://github.com/apple/swift-book/blob/main/Style.md
TSPL 㯠3 ã€ã®äž»ãªããŒãã«å ããŠãè£å®çãªæ©èœãæäŸããããã€ãã®åºæã«åãããŠããŸãã
Swift ãã¢ãŒ(äžè¬çã«ããã¢ãŒããšåŒã°ãã)ã§ã¯ãèå³æ·±ã Swift ã³ãŒãããããã衚瀺ãããŸãããèšèªãã©ã®ããã«æ©èœãããã«ã€ããŠã¯ã»ãšãã©äœã觊ããŠããŸãããäŸãã°ãã¬ã€ã(åŸè¿°)ã«ã¯ãªãã·ã§ãã«ãã§ãŒã³ã«é¢ããç« ããããŸããããã¢ãŒã§ã¯æ°æã«èŠçŽãããŠããŸãããã¢ãŒå ã§ã¯ãæ§æãšãã®äœ¿çšæ¹æ³ãç解ããã ãã§ååã§ãããªãã·ã§ãã«ãã§ãŒã³ãã©ã®ããã«æ©èœãããã€äœ¿çšããå¿ èŠãããã®ãã«ã€ããŠã®å®éã®è©³çŽ°ãªèª¬æã¯ãã¬ã€ãã«ä»»ããŠããŸãã
ãã¢ãŒã®æå³ã¯ãäžåºŠã«å šäœãèªãããšãã§ããããšã§ããåå¿è ã¯ãSwift ã§ã§ããããšã®æŠèŠãç解ã§ããŸããããã°ã©ãã³ã°ã®çµéšãè±å¯ãªèªè ã¯ããSwift ãå±éºã§ããããšç¥ãããšãã§ããŸããã€ãŸããæåã®ãããžã§ã¯ãã§æ··ä¹±ãå§ããã®ã«åå㪠Swift ã®èšèªæ§æã䜿çšããä»ã®èšèªããæ¢ã«ç¥ã£ãŠããæŠå¿µã«ã€ããŠãè¡šé¢ã¬ãã«ã® Swift ã®èšèªæ§æ以äžã®å 容ã«ã€ããŠåŠã¶æºåãã§ããããTSPL ã«æ»ã£ãŠããŸãã
èšèªã¬ã€ã(äžè¬çã«ãã¬ã€ãããšåŒã°ãã)ã¯ãåŠç¿ããã®ã«åœ¹ç«ã€é åºã§ Swift èšèªã«ã€ããŠæ¡å ããŸãããã ããèšèªãŸã㯠Swift æšæºã©ã€ãã©ãªã®ãã¹ãŠã®æ©èœã玹ä»ããããšãçŽæãããã®ã§ã¯ãªããããã€ãã®ããè€éãªåºç€ãšãªãå 容ã«ã€ããŠãæ£ç¢ºãªè©³çŽ°ã端æã£ãŠèª¬æããŸãããã®ã¬ã€ãã¯ããªãã¡ã¬ã³ã¹(åŸè¿°)ã«åºã¥ããŠãæ žå¿ãçªãã詳现ãªçåã解決ããèšèªã培åºçã«ã«ããŒããŠããŸãããªãã¡ã¬ã³ã¹ãšã¯ç°ãªããèšèªæ©èœã®å®éã®äŸã瀺ããªãããé ãè¿œã£ãŠèª¬æããŸããäºåã®ç¥èã¯ã»ãšãã©å¿ èŠãããŸããã
ã¬ã€ãã«æ°ããã»ã¯ã·ã§ã³ãè¿œå ãããšãã«ãäžããé çªã«èªãããšãã§ãããšãã決ãŸããç¶æããããã«ã¯ã説æã§äœ¿çšãããã¹ãŠã®æ§æãšæŠå¿µãäºåã®ç« ã§æ¢ã«èª¬æãããŠããããšã確èªããŠãã ããããåºæ¬ãã®ç« ã¯ãäž»ã«ãã¬ã€ãå ã®æåã®æ¹ã®ç« ã§å¿ èŠãªäžé£ã®æ§æãšæŠå¿µã玹ä»ããããã«ååšããŸãããåºæ¬ãã®å€ãã®ãããã¯ã¯ãã¬ã€ãã®åŸåã§ããã«è©³ãã説æãããŠããŸãã
ãã®ã¬ã€ãã«ã¯ã2 ã€ã®çç±ãã Swift æšæºã©ã€ãã©ãªã®åãå«ãŸããŠããŸããããã¯ãèšèªã®æŠå¿µã説æããããã«å¿ èŠã§ãããšããããšãšãããŸãã«ãäžè¬çã§ãããããèªè ãããããªãã§ã¯åœ¹ã«ç«ã€ãã®ãæ§ç¯ã§ããªããšããããšã§ããåŸè ã®çç±ã«ã¯ãå人çæèŠãå«ãŸããŸããSwift æšæºã©ã€ãã©ãªã«æ°ããåãå°å ¥ããããšãéåžžããããã TSPL ã«è¿œå ãããã©ãããã©ãã«è¿œå ãããã«ã€ããŠè©±ãåãå¿ èŠããããŸãã
ãã®ã¬ã€ãã¯ãåºæ¬çãªãããã¯ãããŒã¿ã¢ããªã³ã°ã®ãããã¯ãé«åºŠãªãããã¯ã® 3 ã€ã®äž»èŠãªãŸãšãŸãã«åããããšãã§ããŸããåºæ¬çãªãããã¯ã®ç¯å²ã¯ãåæåãæ§é äœãã¯ã©ã¹ã®åã®ãã¹ãŠã®ãããã¯ã§ããé«åºŠãªãããã¯ã®ç¯å²ã¯ããã€ãã·ã£ã©ã€ãŒãŒã·ã§ã³ã®åŸã®ãã¹ãŠã®ãããã¯ã§ããããŒã¿ã¢ããªã³ã°ã¯ãã®äžéã®å 容ã§ãããããã®äž»èŠãªãŸãšãŸãéã§ãã°ããèªãã®ããããŠããŸã£ããšããŠããäžããé çªã«èªãã°ããã®ãŸãšãŸãã®æå³ããããããã«æå³ããŠäœæãããŠããŸããäŸãã°ãåºæ¬çãªãããã¯ãèªãã ãã§ããæ§é åãããŠããªããããªããã£ãããªããŒã¿ã®ã¿ãæã€ããã°ã©ã ãäœæããã®ã«ååãªæ å ±ãåŸãããŸããåãŸãšãŸãå ã¯ãæåã«åºæ¬çãªãããã¯ãé 眮ãããã»ãšãã©ã®èªè ãã¹ãããã§ãããããã¯ãæåŸã«é 眮ãããŠããŸãã
èšèªãªãã¡ã¬ã³ã¹(äžè¬çã«ããªãã¡ã¬ã³ã¹ããšåŒã°ãã)ã¯ãSwift èšèªã®ãã¹ãŠã®åŽé¢ãå®å šã«è©³çŽ°ã«èª¬æããŠããŸãããæç§æžã«ãªãããšãæå³ãããã®ã§ã¯ãããŸãããããã¯ã圢åŒææ³ã®åœ¢ã«åŸã£ãŠäžŠã¹ãããŠãããäŸãšå¿çšã端æã£ãŠããŸããããã€ãã®å Žæã§ã¯ãäŸã瀺ããã¬ã€ããžã®ãªã³ã¯ãæ瀺ããŠããŸãããªãã¡ã¬ã³ã¹ã¯ãåå¿è ã«èŠªãã¿ããããã®ã§ããå¿ èŠã¯ãããŸããã(ããã¯ã¬ã€ãã察å¿ããŠããŸã)ãèšèªã®äžã§ããã£ãã«æ·±æããããªãé åã«ãçŠç¹ãåœãŠãŠãæ£ç¢ºãã€æ確ã§ããå¿ èŠããããŸãããã®ããã«ã¯ãåã£ã€ããããã芪ãã¿ããããç ç²ã«ããªããã°ãªããªãå ŽåããããŸããå€ãã®èªè ã¯ãããã£ãé åã®ãªãã¡ã¬ã³ã¹ããå¿ èŠãšããªãã®ã§å€§äžå€«ã§ããããªãã¡ã¬ã³ã¹ãäžæ確ã ãšãçããå¿ èŠãªèªè ã¯ä»ã«è¡ãåœãŠããªããªã£ãŠããŸãããã§ãã
ãªãã¡ã¬ã³ã¹å ã¯ãã»ã¯ã·ã§ã³ã®å 容ãæšæž¬ã§ãããã㪠4 éšæ§æã«ãªã£ãŠããŸãã
- èŠåºãã®èšèªæ§é ã 2ã3 æã§ç°¡åã«èª¬æããŸã
- ã³ãŒãã®æŠèŠã¯ãã®äžè¬çãªæ§æã®åœ¢ã瀺ããŠããŸã
- 2ã3 段èœã§ãã詳现ã説æããŸã
- ææ³ã¯æ§æã圢åŒçã«èšè¿°ããŸã
圢åŒææ³ã®ç®çã¯ããªãã¡ã¬ã³ã¹ã®ã·ã³ãã«ãªæã§ã¯å®å šã«çããããªãã£ãåãã«å¯ŸããŠã(æå³ã«ã€ããŠã³ã¡ã³ãããããšãªã) Swift ãšããŠåŠ¥åœãªåœ¢åŒã¯äœããšããåãã«æ確ã«çããããããã«ããããšã§ããããã¯äž»ã«äººéã®èªè ã察象ãšããŠãããããSwift ã³ãŒãã®ããŒãµãŒãçæããã®ã«åžžã«é©ããŠãããšã¯éããŸããã
ã¬ã€ãã§ã¯ãå±æ§åã®åã« @
ãæžããŸãã
ãªãã¡ã¬ã³ã¹ã§ã¯ãçç¥ããŸãã
2 ã€ã®åèªã§ã€ã¥ãã1 åèªã«ãããããã€ãã³ãä»ããŸããã
èšèªãªãã¡ã¬ã³ã¹ã®éæšå¥šã®æ©èœã説æããã»ã¯ã·ã§ã³ã®åé ã«ãéæšå¥šã®æ³šéãè¿œå ããŠãã ããã以äžã®ãããªè¡šçŸãšããŒã¯ã¢ããã䜿çšããŠãã ãã:
> éæšå¥š:
> ãã®å±æ§ã¯éæšå¥šã§ãã
> [main](./language-reference/attributes.md#main)ã代ããã«äœ¿çšããŠãã ããã
> Swift6ã§ã¯ããã®å±æ§ã䜿çšãããšãšã©ãŒã«ãªããŸãã
"definitive initialization"ã§ã¯ãããŸããã DI ãšããç¥ç§°ã䜿ã£ãŠã¯ãããŸããã
äžèšã® Swift ã®é ç®ãèŠãŠãã ããã
ãªãã¡ã¬ã³ã¹ã§ã¯ããé¢æ°ãã«ããªãŒé¢æ°ãšã¡ã³ããŒé¢æ°ã®äž¡æ¹ãå«ãŸãããããã¡ãœããã«ã€ããŠãåå¥ã«èšåããŸãããã¬ã€ãã§ã¯ããé¢æ°ãšã¡ãœããããšæžããŠããŸãã
èŠåºãã«ã¯ã¢ã³ããŒã©ã€ã³ã§ã¯ãªãçªå·èšå·(#
)ã䜿çšããŸãã
4 éå±€ã®èŠåºãã¯èš±å¯ãããŠãããæ¬ã§ã䜿çšãããŠããŸãããéåžžã¯é¿ããããã«ããŠãã ãããæ·±ããã¹ãããèŠåºãã¯ãå€ãã®å Žåãã³ã³ãã³ããæŽçããããã®ããè¯ãæ¹æ³ãããããšã瀺ããŠããŸãã
"member-wise"ã®ããã«ãã€ãã³ãã€ããªãã§ãã ããã
ã¬ã€ãã§ã¯ä»å±ãã¯ã(attached macros)ãæãå Žåã¯ååã®åã« @
ããèªç«åŒãã¯ã(freestanding macros)ãæãå Žåã¯ååã®åã« #
ãèšè¿°ããŸãã
ãªãã¡ã¬ã³ã¹ã§ã¯ãçç¥ããŸãã
ãé¢æ°ãã®é ç®ãèŠãŠãã ããã
nono-ptional ãšèª€èªãé¿ããããã«ãã€ãã³ã§ã€ãªããŸããApple ã¹ã¿ã€ã«ã¬ã€ãã®ãã€ãã³ã®éåžžã®ã«ãŒã«ã§ã¯ããã€ãã³ã¯çç¥ãããŸãã
ã³ããã(51c4fbc135a5e82343a0f5d9121f8a060b59f1a3) ããã³ rdar://problem/44881846 ãåç §ããŠãã ããã
äºéåŠå®ã®ä»£ããã«ãåæãã䜿çšããŠãã ããã
åããŠååä»ãæŒç®åãå°å ¥ãããšãã¯ããã®ååã®åŸã«ãã®èšå·ãä»ããŸãã以éã®äœ¿çšã§ã¯ãã·ã³ãã«ãåç¬ã§äœ¿çšããŠãã ãããäŸãã°:
ããã©ã«ãã§ã¯ãç¬èªã®ã¯ã©ã¹ãšæ§é äœã«ã¯ãçå·æŒç®å(
==
)ãŸãã¯äžçå·æŒç®å(!=
)ã®å®è£ ããããŸãããéåžžã¯==
æŒç®åãå®è£ ãã==
æŒç®åã®çµæãåŠå®ãã!=
æŒç®åã¯Swift æšæºã©ã€ãã©ãªã®ããã©ã«ãå®è£ ã䜿çšããŸãã==
æŒç®åãå®è£ ããã«ã¯ 2 ã€ã®æ¹æ³ããããŸãã
ãªãã¬ãŒã¿ãŒã«ç¢ºç«ãããè±èªã®ååããªãå Žåã¯ãçºæããååã«ã€ããŠããã¯ã¬ãã¥ãŒãåããããã«ããŠãã ããã
å è©ãçç¥ããŠãã ããã"use an optional binding"ã§ã¯ãªãã"use optional binding"ã䜿çšããŠãã ããã
äžè¬çã«ãèœåæ ã¯ããèªã¿ãããåŸåããããããèœåæ ã§æãæžãããšãã§ãããšãã«ååæ ãé¿ããããšããæžãæ¹ã®ã¬ã€ãã³ã¹ã¯åŒãç¶ãé©çšãããŸãããã ããTSPL ã®äž»é¡ã«ãã£ãŠã¯ããããŸããªã³ã³ãã€ã©ã Swift ãããŒãµã«ãã£ãŠå®è¡ããããããèœåæ ã«ããŠãæå³ã®ããäž»é¡ããªãå ŽåããããŸãããã®å Žåãåäœäž»ã§ã¯ãªãã¢ã¯ã·ã§ã³ã«çŠç¹ãåœãŠãæãæžãã«ã¯ãååæ ãããæ確ã§ãã
äŸãã°ããX 㯠Y ãšããŠç解ãããããšãããã¬ãŒãºã¯ãæ§æã®æå³ã説æããéã«ãªãã¡ã¬ã³ã¹ã«äœåºŠãç»å ŽããŸãããã®å Žåãç解ãå®è¡ããæ確ãªåäœäž»ãååšããããã®åäœäž»ãããããªãã§ãããããååæ ã¯èœåæ ãããæ確ã§ãã
ããã¯ãawait
ã®ã»ãã³ãã£ã¯ã¹ã説æããéã«æšå¥šãããè¡šçŸã§ããæèäžæããŠãããã®ããã§ã«æ確ã§ãããç¹°ãè¿ãã®ãæœåšçãªããåé·ã«ãªãå Žåã¯ãåã«ãäžæç¹ãã«ççž®ã§ããŸãã
ã³ãŒããªã¹ããåºæ¬çã«æã®äžéšã®ããã«æ©èœãããªã¹ãã§ã¯éåžžã®æããããæ瀺çã«åç §ããŠããå Žåãã次ã®ããã«ããŸãã¯ã以äžã«ç€ºãããã«ãã®ãããªãã¬ãŒãºã§çµããæã®åŸã«ã³ãã³ãæžããŸãããäŸãã°:ãã®ããã«æã®æçã®åŸã«ã³ãã³ã䜿çšããŸããã³ãŒãã«ã€ããŠè¿°ã¹ãŠããæã®åŸã«ã¯ããªãªããæžããŸãããã³ãŒããåç §ããåèªã¯å«ããŸãããã次ã®ã³ãŒãã§ã¯ãã®ãããªèªå¥ã§å§ãŸãæã«ã¯èªç¹ã䜿çšããŸãã
泚æ: ãã®çšæ³ã¯æ¢åã®ããã¹ããšå®å šã«äžèŽããŠããããã§ã¯ãããŸãããããã«ã€ããŠã³ãããã£ã°ã«ãŒããšè©±ãåãå¿ èŠããããŸãã
Apple ã¹ã¿ã€ã«ã¬ã€ãã§ã¯ãã³ãŒãã®å®è¡æç¹(run time)ãšã³ãŒãã®å®è¡ç°å¢(runtime)ã®äž¡æ¹ã«ãruntimeãã䜿çšããŸãããããŸã§ã®ãšãããObj-C ã®å®è¡ç°å¢ãããã¥ã¡ã³ãåãããŠããããã« Swift ã®å®è¡ç°å¢ã¯ããã¥ã¡ã³ãåãããŠããªãããããã®åºå¥ãè¡ãå¿ èŠã¯ãããŸããã§ããã(Swift ã®å®è¡ç°å¢ã¯ãObj-C ã®å®è¡ç°å¢ã®ããã« API ãå ¬éããŠããªããããç§ãã¡ã¯ãäžéšããã¥ã¡ã³ãåããŠããŸãã) äžè¬çã«ãçšèªã®äœ¿çšæ¹æ³ãç°ãªããããäŸå€ãé€ããŠæèããéãã¯æããã§ãããrun-time errorãããruntime errorããªã©ã®ãã¬ãŒãºã¯ãã³ãŒãã®å®è¡äžã«çºçãããšã©ãŒãšãSwift ã®å®è¡ç°å¢ã«èµ·å ãŸãã¯é¢é£ãããšã©ãŒãããããæããŸãã
ã¢ã¯ã¿ãŒã説æãããšãã¯ãã®åèªãé¿ããŠãã ãããèšèšäžãã¢ã¯ã¿ãŒã¯å¯å€ç¶æ ãå ±æããããšãå ·äœçã«é¿ããŠããŸããå¯å€ç¶æ ã¯éå ¬éã§ãããã¢ã¯ã¿ãŒã®(async)ã¡ãœãããä»ããŠã®ã¿ã¢ã¯ã»ã¹ã§ããŸãã
æåã®äœ¿çšã§ã¯ããSwift æšæºã©ã€ãã©ãªããšå®å šã«æèšããŠãã ããã æèäžããã§ã«æ確ã§å®å šãªååãç¹°ãè¿ãã®ããã©ãå Žåããæšæºã©ã€ãã©ãªããšççž®ã§ããŸãã (çŸåšããããã£ãäŸã¯ãããŸãã)ã
API ã®ã·ã³ãã«åãšäžèŽããããã«ã代ããã«ãè¿œå (add)ãã§æ°ãã Task ã®äœæã«ã€ããŠèšåããŠãã ããã(çæãéå§ãšããååã¯ã以åã®ããŒãžã§ã³ã®ããããŒã¶ã«ã§äœ¿çšãããŠããŸãã)
æœåšçãªäžæç¹ã®é ç®ãèŠãŠãã ããã
çµ±èªæ§é (ã³ãŒããã©ã®ãããªæ§é ãããŠããã®ã)ã®åœ¢ç¶ã瀺ãå Žåã«ã®ã¿äœ¿çšããŠãã ãããæ§æã®ã¢ãŠãã©ã€ã³ã®åŸã«ç¶ãæ¬æã®ãã¬ãŒã¹ãã«ã(ãããããéãããã«)ãåç §ããå Žåã¯ããã®ååãã€ã¿ãªãã¯äœã«ããŸãã
æ§æã®ã®ã¢ãŠãã©ã€ã³ã¯ãã¬ã€ãã§ã¯æ§ããã«äœ¿çšãããŠããŸããããªãã¡ã¬ã³ã¹ã§ã¯åºç¯å²ã«äœ¿çšãããŠããŸãã
ãã®ã¬ã€ãã§ã¯ãã³ã³ãã€ã©ãŸãã¯èšèªãè¡ã£ãŠããããšã説æãããšãã«ãSwift ãã芪ãã¿ããããäž»é¡ãšããŠäœ¿çšããŠããŸããäŸãã°:
Swift ã¯ãçŸåšã®ã€ã³ã¹ã¿ã³ã¹ã®ããããã£ãŸãã¯ã¡ãœãããåç §ããŠãããšæ³å®ããŸãã
Swift ã¯
someString
å®æ°ãString
åãšæšæž¬ããããšã«æ³šæããŠãã ããã
Any
åã®å€ãæåŸ ãããå Žåã«ãªãã·ã§ãã«å€ã䜿çšãããšãSwift ã¯èŠåã衚瀺ããŸãã
ãªãã¡ã¬ã³ã¹ã§ã¯ãã³ã³ãã€ã©ãã¢ã¯ã·ã§ã³ãå®è¡ããå®éã®åäœäž»ã§ããå Žåã«å ·äœçã«èšåããŠããŸããç§ãã¡ã¯ããŒãµ(parser)ãã¬ããµ(lexer)ããªããã£ãã€ã¶(optimizer)ãªã©ã®ã³ã³ãã€ã©ã®è©³çŽ°ãåºå¥ããŸããã
äžè¬çã«ããããŠç¹ã«ã¬ã€ãã¯ã楜ãããäŒããããã«æžãã¹ãã§ããæ¬æžå ã®äŸã¯ç°¡åã§ãèªã¿ããããã®ã§ãªããã°ãªããŸãããã€ãŸããçŸå®çãªã³ãŒãã奜ãŸããå€ãã®ç« ã§è€æ°ã®äŸã«å ±éã®ç©èªãç¹ã蟌ãŸããŠããŸãããã®é£ç¶ããç©èªã®ã€ãªããã¯ãåŸã ã®å€æŽããã倧å€ã«ããå¯èœæ§ããããŸãããç« ã®æµããè¯ããªããå šäœãšããŠãããããŸãšãŸããããç·ããŠååã«ãããã䟡å€ã¯ãããšæããŸãã
èªã¿ããããšèŠªãã¿ãããã®ããã«ãããšããªãã¡ã¬ã³ã¹ã§ãã£ãŠããæ§æã説æããŠããã ãã§ãã£ãŠãã1 æåãŸãã¯ç¡æå³ãªèå¥åãæã€äŸã¯èšè¿°ããŸãããé¢é£ããªãå Žåã¯ã代ããã« SomeStructure
ãªã©ã®åã someArray
ãªã©ã®å€æ°ã䜿çšããŸãã
ç§ãã¡ã®äŸã®äžã«ã¯ãã¬ã€ããã¢ãŒã®ãã¿ã«ã®ä¹çµå¡ã«ã€ããŠã®ãžã§ãŒã¯ãªã©ãæ¬ã®å€ã®ãã®ãžã®ãŠãŒã¢ã©ã¹ãªèšåãå«ââãŸããŠããŸããããã€ãã«ã¯ããããã解説ããŠãã REFERENCE ã³ã¡ã³ããä»ããŠããŸãããããã£ãèšåã®æå³ãããããªãã£ããšããŠããäœäºããªãããã«å šéšç¡èŠã§ããŸãããŸããèšåãããããšã«æ°ã¥ããããã©ããžã§ãŒã¯ãç解ã§ããªãã£ãå Žåã¯ããªã³ã©ã€ã³ã§ç°¡åã«æ€çŽ¢ã§ããã¯ãã§ãã
ã¬ã€ãå ã®ã³ãŒããªã¹ãã¯ãéåžžã3 éšæ§æã®æ³åã«åŸããŸããã³ãŒããªã¹ãã®åã®æ®µèœã§ã¯ã解決ããããšããŠããåé¡ãçµã¿ç«ãŠã次ã«ã³ãŒããäœãããããéåžžã«é«ãã¬ãã«ã§èª¬æããŠããŸããã³ãŒãã®åŸã®ãã©ã°ã©ã(å Žåã«ãã£ãŠã¯è€æ°ã®ãã©ã°ã©ã)ã§ã¯ãã³ãŒããªã¹ããäœãè¡ã£ããã詳ãã説æããŸãããã®æå³ã¯ãæ¬è³ªçã«æ®µéçãªé瀺ãæäŸããããšã§ããäžçŽã®èªè ã¯ã³ãŒããªã¹ãã®åŸã®æ®µèœãã¹ãããã§ãããã®åã®ããã¹ãã®äžéšã§ãããã¹ãããã§ãããããããŸããããå¿ èŠãªèªè ã«ã¯ãã³ãŒãã¯å®å šã«åæç¥èãªãã§ãç解ã§ããããã«èª¬æãæäŸããŠããŸãã
ãã¢ãŒãã¬ã€ãããªãã¡ã¬ã³ã¹ã®ãã©ã³ã¹ã«ã€ããŠã¯ããã®ãªããžããªã®ãããã®éå±€ã«ãã README ãã¡ã€ã«ãåç §ããŠãã ããã
ãã®ãªããžããªã®ããŒã¯ããŠã³ãã¡ã€ã«ã§ã¯ãæãå¥ã®åºåããšãªãè¡æ«ã«æ¹è¡ã䜿çšããŸããããããããšã§ããã«ãªã¯ãšã¹ããã³ãããéç¥ã¡ãŒã«ãããã³ã¿ãŒããã«ãªã©ã®å Žæã§è¡šç€ºããããšãã«ãå·®åãèªã¿ããããªãããè¡ãååã«çãä¿ã€ããšãã§ããŸããè¡ã¯æå³ã®ããå Žæã§æ¹è¡ãããããã段èœå
šäœãåæ¹è¡ãããããªå€æŽã¯å¿
èŠã¯ãªããå€æŽãããè¡ã®ã¿ãããŒã¯ãããããã«ãªããŸããããã«ãããgit-blame
ãªã©ã®ããŒã«ã§è¡ããšã®å±¥æŽãååŸã§ããŸãã
å·çæã¯ãè¡ã 80 æå以äžã«ããããšãç®æããŠæžããŠãã ãããåæã®åŸãããã³å¿ èŠã«å¿ããŠå¥ã®å¢çã§æ°ããè¡ãéå§ããŸããããé·ããªã¹ãã®å Žåãåãªã¹ãã¢ã€ãã ãããããã®è¡ã«é 眮ããå ŽåããããŸããããã¯ãè¡ã䞊ã¹æ¿ããããšãã§ãããããã¢ã«ãã¡ãããé ã«äžŠã¹ãããªã¹ãã§æã圹ã«ç«ã¡ãŸããæ¬æžã«ã¯ããã€ãã®ç°ãªãã¹ã¿ã€ã«ãããã®ã§ãç¹å®ã®ã¢ãããŒãã«å³å¯ã«åŸãå¿ èŠã¯ãããŸããã
æ¢åã®ããã¹ããç·šéãããšãã¯ãå¯èœã§ããã°æ¹è¡ãä¿æããŠãå·®åãå°ããä¿ã¡ãè¡ããšã®å±¥æŽãä¿æã§ããããã«ããŸããå®éã«ä»ã®å€æŽãå ããŠããªãéããé·ããããšããçç±ã ãã§æ¢åã®è¡ãæãè¿ããªãã§ãã ãããæŽå²çãªçç±ãããæ¬ã«ã¯ 90ã 100 æåã®è¡ã®é·ãã䜿çšããéšåããããŸããè¡ã®é·ãã ãã®ããã«ããããåæ¹è¡ãããšãå±¥æŽã远跡ããã®ãé£ãããªãããã€ãºã®å€ãå·®åãäœæãããŸãã
æŽå²çãªã¡ã¢ãšããŠã1974 幎㮠Brian W. Kernighan ã«ãããUNIX for Beginnersãããããããã®ã¢ãããŒãã®èµ·æºã§ãããã11 ããŒãžã«ã¯ããããã¥ã¡ã³ããæºåããããã®ãã³ããã»ã¯ã·ã§ã³ã«æ¬¡ã®ã¬ã€ãã³ã¹ããããŸã:
ã»ãšãã©ã®ããã¥ã¡ã³ãã¯ãæçµçã«å®æãããŸã§ã«(åžžã«äºæ³ä»¥äžã«)è€æ°ã®ããŒãžã§ã³ãçµãŸãããããã£ãŠãããããç°¡åã«å€æŽã§ããããã«ãã§ããéãã®ããšãè¡ãå¿ èŠããããŸãã
ãŸããå ¥åãšãããã æ©æ¢°çãªæäœãè¡ãå Žåã¯ããã®åŸã®ç·šéã容æã«ãªãããã«å ¥åããŸããåæã¯æ°ããè¡ã§éå§ããŸããè¡ãçãããã³ã³ããã»ãã³ãã³ã®åŸãªã©ãã©ã³ãã ã«ã§ã¯ãªãèªç¶ãªå Žæã§æ¹è¡ããŸããã»ãšãã©ã®äººã¯ããã¬ãŒãºãæžãçŽããããæãè¿œå ãåé€ã䞊ã¹æ¿ãããããŠããã¥ã¡ã³ããå€æŽããããããããã£ãäºé²æªçœ®ã«ãããåŸã§è¡ãå¿ èŠã®ããç·šéãç°¡åã«ãªããŸãã
ãã®ã¬ã€ãã³ã¹ã¯ãããšããšçŽã®ãã¬ã¿ã€ãã§ã©ã€ã³ãšãã£ã¿ã® ed(1)
ã䜿çšã㊠nroff
ããã³ troff
ãã¡ã€ã«ãçšæãããšããæèã§æžãããŠããŸããããGit ããã®ä»ã®ããã°ã©ãã³ã°ããŒã«ã¯äžè¬çã«ããã¹ãã 80 æåæªæºã®è¡ã§æ§æãããããšãæåŸ
ããŠããŸãã
ãããã®ã¬ã€ãã©ã€ã³ã¯ããªãã¡ã¬ã³ã¹ã®ãGrammar of Xããããã¯ã«é©çšãããŸãã
**ASCII ç¢å°ãæžããŸãããã**ç¢å°(-->
)ã¯ãã§æ§æã§ããããšèªãããšãã§ããŸãã
RST(â»)ã§ç¢å°ãäœæããã«ã¯ã2 ã€ã®ãã€ãã³(-
)ã®åŸã«å³å±±ãã£ã(>
)ã䜿çšããŸããæ¬ã§ã¯ããã°ããã Unicode ç¢å°ã«ã¬ã³ããªã³ã°ãããŸãã
â» ReStructuredText: https://www.sphinx-doc.org/ja/master/usage/restructuredtext/basics.html
ããã¯ã¯ã©ãŒãã 2 ã€äœ¿çšããŠãªãã©ã«ãèšè¿°ããŸãã äŸãã°:
forty-two --> ``42``
è¿œå ã®ããŒã¯ã¢ãããªãã§æ§æã«ããŽãªåãèšè¿°ããŸãããã æ§æææ³ãããã¯å ã§ã¯ãèªåçã«æäœã§è¡šç€ºãããŸãããããã®äžã«ããè±èªã®éåžžã®æããããããåç §ããªãã§ãã ããã
**æ§æã«ããŽãªã®ååãšããŠå®å šãªè±åèªã䜿çšããŸãããã**ã¹ããŒã¹ã®é¢ä¿ã§ããããå®çŸã§ããªãå ŽåããããŸããäŸãã°ãC ã¹ã¿ã€ã«ã® for æã®ææ³ã§ã¯ãfor æã®åæåéšåã§å®çŸ©ããã«ããŽãªã for-init ã«ççž®ããå¿ èŠããããŸãã(èŠåã§æå®ãããŠãããããªfor-initialization ã§ã¯ãªã)ããã®å Žåãèªã¿ããããæè²äžã®èŠ³ç¹ããèŠãã°ãäœã倱ãããŠããªããšèããããŸãã
c-style-for-statement --> ``for`` for-init-OPT ``;`` expression-OPT ``;`` basic-expression-OPT brace-item-list
c-style-for-statement --> ``for`` ``(`` for-init-OPT ``;`` expression-OPT ``;`` basic-expression-OPT ``)`` brace-item-list
for-init --> variable-declaration | expression
**代æ¿æ¡ã瀺ãã«ã¯ããã€ã(|
)ã䜿çšããŸãããã**éžæè¢ãå€ãã㊠1 è¡ã«åãŸããªãå Žåã¯ãéžæè¢ããšã«æ°ããè¡ã䜿çšããŸãããã€ããšæ¹è¡ãæ··ããªãã§ãã ããã
äŸãã°ãcase-block-item ã¯å®£èšãåŒããŸãã¯æã§æ§æã§ããããšãæå®ããããã«ãæ¹è¡ã®ä»£ããã«ãã€ãã䜿çšã§ããŸããããã¯ã3 ã€ã®éžæè¢ãã¹ãŠã 1 è¡ã«ããŸãåããããã§ãã
code-block-item --> declaration | expression | statement
ãã€ãã䜿çšããå Žåã¯ãèªã¿ãããããããã«ãåéžæè¢ã®é ç®æ°ãå°ãªãããŠãã ãããæãäžè¬çãªã±ãŒã¹ã¯ãåéžæè¢ãåäžã®ãªãã©ã«ãŸãã¯åäžã®æ§æã«ããŽãªã®ããããã§ããå Žåã§ãããåžžã«å¯èœã§ãããšã¯éããŸããã
äžæ¹ãå¶åŸ¡è»¢éæã®ææ³ãèããŠã¿ãŸããã:
control-transfer-statement --> break-statement
control-transfer-statement --> continue-statement
control-transfer-statement --> fallthrough-statement
control-transfer-statement --> return-statement
control-transfer-statement --> break-statement
control-transfer-statement --> continue-statement
control-transfer-statement --> fallthrough-statement
control-transfer-statement --> return-statement
ãã€ãã䜿çšããŠå代æ¿æ¡ãåé¢ããã«ã¯ãåäžã®è¡ã ãšäœè£ããªãå ŽåããããŸãã次ã®ãããªãã®ã¯èŠæ ãããããªãåŸåããããŸã:
control-transfer-statement --> break-statement | continue-statement | fallthrough-statement | return-statement
ãªãã·ã§ã³ã§ããããšã瀺ãããã« -OPT
ãè¿œå ããŸãããã æ§æææ³ãããã¯å
ã§ã¯ãããã¯æ·»åãoptãã«èªåçã«å€æãããŸãã
ç¹°ãè¿ãã«ã¯è€æ°åœ¢ã䜿çšããŸãããã BNF(â») ã§ã¯ãããã¯ãã©ã¹(+
)ãŸãã¯æ(*
)ã§è¡šãããŸããæ£åŒãªææ³ã®æ§æã«ã¯ç¹°ãè¿ãæŒç®åãå«ãŸããŠããªãããã2 ã€ã®æ§æã«ããŽãªã䜿çšããŠç¹°ãè¿ããè¡šããŸãã äŸãã°:
categories --> category categories-OPT
category --> More formal grammar goes here.
switch-statement --> ``switch`` basic-expression { switch-cases-OPT }
switch-cases --> switch-case switch-cases-OPT
switch-case --> case-label statements
switch-case --> default-label statements
switch-case --> conditional-switch-case
â» ããã«ã¹ã»ããŠã¢èšæ³ https://ja.wikipedia.org/wiki/ããã«ã¹ã»ããŠã¢èšæ³
è€æ°åœ¢ã¯ãåæ°åœ¢ã®ãã®ãç¹°ãè¿ããªã¹ãã®ã¿ã§æ§æãããŸããã«ã³ããªã©ã®åºåãæåãå¿ èŠãªå Žåã¯ããlistããšåŒã³ãŸãã
case-label --> attributes-OPT ``case`` case-item-list ``:``
case-item-list --> pattern where-clause-OPT | pattern where-clause-OPT ``,`` case-item-list
äžã«ç€ºããããã«ãç¹°ãè¿ããæ±ããšãã¯å³ååž°ã䜿çšããŸãã
**ã°ã«ãŒãåæ¬åŒ§ãçç¥ããŸãããã**ç§ãã¡ã®åœ¢åŒææ³ã§ã¯ãã°ã«ãŒãåæ¬åŒ§ã䜿çšããŸããã-OPT
ã䜿çšãããªãã·ã§ã³ã¯åžžã«ãçŽåã® 1 ã€ã®ããŒã¯ã³ã®ã¿ã«é©çšããã|
ã䜿çšãã 1 ã€ã®ä»£æ¿æ¡ã®ã¿ã«é©çšãããŸãããŸãã¯æ¹è¡ãèš±å¯ãããŸãã
æ¬åŒ§ã䜿çšããæ°ããèšèªæ©èœã® BNF ææ³ãçŸããå Žåã¯ãããããåé€ããéã«åµé æ§ãšå€æåãåãããå¿ èŠããããŸãã
äŸãã°ãBNF ã«ãŒã«ã®ãã®éšåã翻蚳ããã«ã¯ãæ°ããã«ããŽãªãèãåºãå¿ èŠããããå®çŸ©ããå¿ èŠããããŸãã:
('where' expr)?
ããã¯:
guard-expression-OPT
guard-expression --> ``where`` expression
ã«ãªããŸãã
ãã® BNF ã«ãŒã«ã¯å°ãè€éã§ãäžèšã®ã«ãŒã«ã®ããã€ããé©çšããå¿ èŠããããŸãã:
stmt-switch-case ::= (case-label+ | default-label) brace-item*
ããã¯:
switch-case --> case-labels brace-items-OPT | default-label brace-items-OPT
ã«ãªããŸãã