ããŒã¯ãŒãåŒæ°ã®åé¡ã¯èŠåœãããŸããã§ããããä»åŸã®äºå®ã¯ãããŸããïŒ
泚ïŒãã°ãã©ãã«ãŒã¯ãèšèšã«ã€ããŠè©±ãåãå Žæã§ã¯ãããŸããã ãã¹ãŠã®èšèšã«é¢ããè°è«ãetherpadïŒ https://pad.riseup.net/p/hvbg6dQQnEe7 ïŒã«éãããwikiã«ãã€ã¯ã·ã§ãã£ã³ã°ããŒãžãäœæããŠãã ããã
EtherpadïŒ
ãŸã 誰ãå察ãè¡šæããŠããŸããããããã«ã€ããŠã®èšç»ã¯ãããŸããã§ããã ç§ã¯é·ãéãã®åé¡ã«ã€ããŠèããŠããŸããããããŠããã¯åºæ¬çã«ããã©ã«ãã®åŒæ°ã®èŠæ±ã«èŠçŽãããŸãã ç§ã¯ããã次ã®ããã«èŠãããšæããŸãïŒ
fn foo(bar: int, qux=2: int, ham=0: uint) { ... }
ããã¯ã foo(1)
ã foo(1, 3)
ã foo(1, ham=4)
ã foo(6, 7, 8)
ãªã©ãšåŒã¶ããšãã§ããŸãã
ç·šéïŒä»¥äžã®huonwã®ææ¡ãããæ§æãåç §ããŠãã ãããããã¯ãçŸåšã®å®£èšæ§æã§ã¯ããã«è¯ããããåäžã«èŠããŸãã
ããªã¢ãŒãž2013-08-05 :(ç§ãç¥ã£ãŠããïŒé²æ©ã¯ãããŸããããããã§ããã¡ããšããŠããŸãã å€å宣èšæ§æã¯æ¬¡ã®ããã«ãªããŸã
fn foo(bar: int, qux: int = 4, ham: Option<int> = None) { ... }
ããã§ãRHSã¯ä»»æã®å®æ°exprïŒã€ãŸãã static
宣èšã§æå¹ãªãã®ïŒã§ãã
IMOãããã¯æ¬åœã«äŸ¿å©ã§ããäžç¹å®ã®åŒæ°ã远跡ããããã«ããã©ã«ãã«ãã©ãŒã«ããã¯ããããšããã§ããªã_defaultarguments_ã®C ++ã·ã¹ãã ã§ããçŽ æŽãããã§ããã...ãªãŒããŒããŒãã»ã©è€éã§ã¯ãªããã代æ¿ã®ååä»ãé¢æ°ããªã¢ã³ãã®æ°ãæžãããŸããæ§é äœãšåæåã®ããªã¢ã³ãã§ããããã宣èšã§ããã®ã¯çŽ æŽãããããšã§ãã
ãããããå¿
èŠãªåäœã®ãã®åçŽãªãµãã»ããã¯ãååä»ãããŒã¯ãŒããã©ã¡ãŒã¿ãåŒã³åºãæ¹æ³/å Žåã«ã€ããŠã³ã³ã»ã³ãµã¹ãåŸãããåã«å®è£
ã§ããŸã...å
éšã®æºåãæŽããŸããïŒ
åŒãšããŠå®è£
ããããšã¯å®è¡å¯èœ/æçšã§ãããã...以åã«æå®ãããåŒæ°ãšãžã§ããªãã¯åãã©ã¡ãŒã¿ãŒïŒããšãã°ããŒããæ€çŽ¢ããæ©èœ::
C ++ã¹ã¿ã€ã«ã®ããã©ã«ãã§ã¯ãhaskellã®ãããªéšåçãªfunctoinã¢ããªã±ãŒã·ã§ã³ãé€å€ãããŸããããããããŸããããªãå¯èœæ§ããããšèããŸãããïŒ
ããã©ã«ãã®åŒæ°ã®å¥ã®ã¢ã€ãã¢ããããŸãã åŒæ°ãå®å
šã«åé€ããã®ã§ã¯ãªããããã©ã«ããååšããåŒæ°ã_
ã§åŒã³åºãããšãã§ããŸãã
ãããã£ãŠã @ huonwã®çŽ æµãªäŸã
fn foo(bar: int, qux: int = 4, ham: Option<int> = None) { ... }
...ãããfoo(1, 2, None)
ã foo(1, _, Some(1))
ã foo(1, _, _)
ãªã©ãšããŠåŒã³åºãããšãã§ããŸãã
ãã ãããã®ã¢ã€ãã¢ã¯ãŸã å³å¯ã«äœçœ®ä»ããããŠãããããããŒã¯ãŒãåŒæ°ãæ¡çšããŠãå®éã«ã¯äœã®ã¡ãªããããããŸããã
ã¿ã€ãã«ããããã©ã«ãã®åŒæ°ãšããŒã¯ãŒãã®åŒæ°ãã«å€æŽããŸãã
å®è£
ãããŠããŸããããastïŒparserã«è¿œå ããŠã¿ãŸããã https://github.com/dobkeratops/rust/compare/default_args ãããã¯ããã«ã€ããŠè¡ãæ£ããæ¹æ³ã§ããïŒ ïŒãªãã·ã§ã³@expr .. exprãäœã§ãããã«ã€ããŠã®å¶çŽãå¿
èŠã«ãªããŸããïŒïŒ
ãã®æ©èœãè©Šãããã«ãã€ãŸå
ãæ°Žã«æµžããŸãã
翻蚳ã§ããC ++ APIã®ãµãã»ãããå¢ããããã«ããã«ç±å¿ã§ããããããã¯ééããªãC ++ããèŠéããŠãããã®ã§ãããååä»ãããŒã¯ãŒãæ©èœã¯C ++ãããåªããŠããŸãã
2çªç®ã«ææ¡ããã宣èšæ§æã䜿çšããã®ã¯åçŽã§è«ççã§ããããã«æãããŸãã
èŠæ ãã®ãã@dobkeratops ïŒãã ãã type Default = Option<@expr>
ã¯ããããäžèŠã§ãïŒã
expr
ã®å¶çŽã¯rustc::middle::check_const
ãŸã; ååŒæ°ããã§ãã¯ããcheck_fn
ãããªé¢æ°ãè¿œå ããå¿
èŠããããŸãã ïŒãŸããããããããã©ã«ãã®åŒæ°ãæåŸã«ã®ã¿è¡šç€ºãããããã«ãã§ãã¯ããå¿
èŠããããŸããã¿ã€ããã§ãã«ãŒrustc::middle::typeck
ãštrans
ãäœããå¿
èŠã«ãªããšæããŸãã ïŒã
ããããŸããããã£ãŒã«ãã«ã¯ãäžèŠãªæ³šéãä»ããããããã«ååãä»ããããŠããŸãã
ã©ããèŠãã°ããããæããŠãããŠããããšããç§ã¯rustc :: middle :: typeck :: .. mod.rsïŒcheck_fn somethingïŒãæ¢ããŠããŸããã
ãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãã®åã®äžã«ãäºçŽ°ãªåºç€ãåºå ±ãšããŠæåºãã䟡å€ã¯ãããŸãããã³ãŒãããŒã¹ãããç¥ã£ãŠãã誰ãããä»ã®éšåãå¥ã®ãšãã«ãã£ãšéãã§ãããããããŸããã
ç§ã¯åžžã«å€åã®çºæ£ã«ã€ããŠåŠæ³çã§ã
ããªãããããã«å¯ŸããŠç¢ºå®ã«æ±ºå®ããå Žåãããã¯å¯äžã®ç Žå£çã§ããïŒ
誰ãããã®çš®ã®ãã®ã¯-Zãªãã·ã§ã³ã§å ¥ãããšãã§ãããšææ¡ããŸããïŒ..Session :: debug_opts ...ãããç§ã¯ãããã®swereãçŸåšã©ãã«ã§ãäŒæããŠããã®ãèŠã€ããŸããã§ããïŒäŸãã°ããŒãµãŒã§ïŒã
ã³ã³ãã€ã©ããŸã 䜿çšããŠããªããã®ã解æããããšã«å察ãããããããªãããšãããããŸããããããèŠåãããšã©ãŒã«å€æŽããããšãã§ããŸã...
@dobkeratopså ¬åŒã®éçºè ã¯ãŸã ããã«ã€ããŠã³ã¡ã³ãããŠããªãã®ã§ãPRãåãå ¥ããããå¯èœæ§ã¯éåžžã«äœãããšã«æ³šæããŠãã ããã ããã§ã¯ã1ïŒããã©ã«ãã®åŒæ°ãå¿ èŠãã©ããã2ïŒå¿ èŠãªå Žåã¯æ§æã¯ã©ãããã¹ããã3ïŒããŒã¯ãŒãã®åŒæ°ãå¿ èŠãã©ããïŒããã©ã«ãã®åŒæ°ã«éžæããã»ãã³ãã£ã¯ã¹ã«ãã£ãŠããã劚ããããå¯èœæ§ãããããïŒã«ã€ããŠå€ãã®è°è«ããããŸãã ïŒã
ããŠã圌ãã¯äœããããã¯ããªãã®ã§ããŸã é·ãééåžžã«äœãåªå
床ã«ãªããšæããŸãïŒåœŒãã¯ç¢ºãã«ç§èªèº«ã®ãŠã£ãã·ã¥ãªã¹ãã®ãããã§ã¯ãããŸããïŒã
ã¶ãäžãã£ãŠããæç©ãããããªããšæã£ãã ãã§ãC ++ã®äººã
ã«ãšã£ãŠãã1ã€ã®èŠªãã¿ããã..
ãã¯ãã¯æã
åæ§ã®ä»äºïŒããã³ãã以äžïŒãè¡ãããšãã§ãããšæããŸãããããŠç§ã¯äžè¬ç/äžè¬çã§ãªãããªãšãŒã·ã§ã³ã®ããã®ããè¯ãåœåç¿æ
£ã«å
¥ãããšãã§ããŸã
ååä»ãåŒæ°ã¯éèŠã§ã¯ãªãããšãããããŸãããIMOã®ãªãã·ã§ã³ã®åŒæ°ã¯éèŠã§ãã äžéšã®å Žæã§ã¯ãç¹å®ã®åŒæ°ãäžèŠãªå Žåã«ç°¡åãªã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããããã«ãåæ§ã®çœ²åãšåæ§ã®ååãæã€ã¡ãœãããããã€ãèŠããšæããŸãã æ©èœãæ¬ èœããŠãããšããçç±ã ãã§ããã®ãããªã¬ã¬ã·ãŒé¢æ°ã«ãªã£ãŠããŸããšãããã¯ã²ã©ãããšã«ãªãã§ãããã
ããã«ã¯åŸ®åŠãªéšåããããããããŸãã ããã©ã«ãã®åŒæ°ã¯ãã¹ãŠæé»çãªåœ¢åŒã®ãªãŒããŒããŒãã§ãããããïŒæšæž¬ã§ã¯ïŒç¹æ§è§£æ±ºã¢ã«ãŽãªãºã ãåæšè«ãšçµ±åãããå¯èœæ§ããããŸãã ããã»ã©é£ããããšã§ã¯ãªããããããŸããããæ éã«èšèšãã䟡å€ããããŸããçŸæç¹ã§ã¯ããã®ããã®æéäºç®ããããã©ããã¯ããããŸããã _èšèª_æ©èœãšããŠãäžäœäºææ§ããããšæããŸãã apiæ©èœãšããŠãããã¯ããããapièšèšã«ããã€ãã®æ å ±ãäžããã®ã§ãbcãªã¹ã¯ãè¡šããŸãã
@Seldaekããã©ã«ãã®åŒæ°ãå¿ èŠãªå Žåã¯ãstdlibã®äžäœäºææ§ã確ä¿ããåã«ããããå®è£ ããããšãéèŠã§ããããšã«åæããŸãã ãã ããå°ãªããšã1ã€ã®èšèªïŒGoïŒãç¥ã£ãŠããŸãããã®èšèªã¯ãããã©ã«ãã®åŒæ°ãå²åŠçã«æåŠããååãšçœ²åããããã«ç°ãªãé¢æ°ã®ã¢ãããŒããæ¡çšããŠããŸãã
ãã ããRustãšã¯ç°ãªããGoã«ã¯ãããã©ã«ãã®åŒæ°ããªãããšã«ããèŠçã軜æžããããã€ãã®æ©èœããããŸãã äžã€ã«ã¯ããããã¯å¯å€ååŒæ°æ©èœãæã£ãŠããŸãã[1] 次ã«ãæ§é äœãäœæãããšãã«ãã£ãŒã«ããçç¥ã§ããŸããã€ãŸããæ§ææ§é äœãé¢æ°ã«æž¡ãã®ã¯ç°¡åã§ãïŒçç¥ããããã£ãŒã«ãã¯ããŠãŒã¶ãŒãã§ãããã®ã§ã¯ãªããã³ã³ãã€ã©ãŒæå®ïŒïŒïŒã®ããã©ã«ãå€ã«èšå®ãããŠããããã«èŠããŸãïŒãã«ã¹ã¿ãã€ãºïŒã[2]
åè
ã®å Žåãåãçµæãéæããããã«ãã¯ãããã«ãŒãåé¿ã§ããå¯èœæ§ããããŸãïŒãã ããé¢åãªå®è£
ã³ã¹ããããããŸãïŒã 確ãã«ã fmt!()
ã®æ¬¡ã®äº€æã¯ãããè¡ããŸãïŒ
ifmt!("{foo} {1} {bar} {0}", 0, 1, foo=2, bar=3)
ããã¯ä»æ¥æ©èœããã³ãŒãã§ãã
åŸè ã«é¢ããŠã¯ãç§ãã¡ãæã£ãŠããæè¯ã®ã¢ããã°ã¯ã次ã®ããã«æ©èœçãªæ§é äœã®æŽæ°ã䜿çšããããšã§ãã
struct Foo { x: int, y: int, z: int }
impl Foo {
fn default() -> Foo {
Foo{x: 0, y: 0, z: 0}
}
}
fn bar(f: Foo) {
printf!(f);
}
fn main() {
bar(Foo{y: 5, ..Foo::default()});
}
ç§ã¯éå»ã«ãã®ã¡ãœãããããã©ã«ãã®åŒæ°ã®æ¬ åŠã®åé¿çãšããŠæã«è² ããªãããã«ææ¡ãããŠããã®ãèŠãŠããŸããããå®éã«ã¯ããªãäžåœã§ãïŒ bar(Foo{y: 5, ..Foo::default()})
ãšbar(y=5)
ããŸãã¯ç§ã®ããä¿å®çãªbar(_, 5, _)
ææ¡ãæ¯èŒããŠãã ããïŒ
ç¹°ãè¿ãã«ãªããŸãããPythonãšJavascriptã®åºèº«è ãšããŠãç§ã¯æããã«ããã©ã«ãã®åŒæ°ãæè¿ããŸãã ãã ããAPIãæ瀺çã«ãããšããGoã®å²åŠã«ã¯å€å°å ±æããŸãïŒAPIèªäœã®é¢æ°ã®æ°ãïŒæœåšçã«å€§å¹ ã«ïŒå¢ããããšãšåŒãæãã«ïŒã
[1] https://groups.google.com/d/msg/golang-nuts/NWMReL1HueQ/X9mdYduCOB8J
[2] http://stackoverflow.com/questions/2032149/optional-parameters
ãŸããã¯ããŒãžã£ãŒãšçžäºäœçšããé¢æ°ãžã®ãã¡ãŒã¹ãã¯ã©ã¹ã®åç §ãååŸããããšãææããŠããå¿ èŠããããŸãã
@bstrieGoã®æŠèŠãããããšãã ãªãŒããŒããŒãã¯çŽããããAPIãäœæãããããããããæªãèãã§ãããšããç¹ã«åæããŸãã åæ§ã«ãå¿ èŠãªã»ãšãã©ãã¹ãŠã®åŒæ°ã§ã³ãŒã«ããã¯ãåãåãããšãã§ããjQueryã®ããªãŒããŒããŒãããããã¡ãœããã¯ãéåžžã«å¥åŠã§ãå®è£ ããã®ãé¢åã§ãã
ãŸããããã©ã«ãã®åŒæ°ãå
¥åããã©ãããŒé¢æ°ãããã»ã©æªããªãå Žåãããããšã«åæããŸãã ããããåé¡ã¯ãããã€ãã®çŽããããã±ãŒã¹ããããªããæãäžæ¹ã§ãä»ã®ã±ãŒã¹ã§ã¯å€ãã®å®åæãå°å
¥ããããšã§ãã äžäŸã¯*::to_str_radix(num, radix)
ã§ãã ãªãã·ã§ã³ã®åŒæ°ãããå Žåãããã¯*::to_str(num, radix = 10)
ã§æããããããšãã§ããŸãã å Žåã«ãã£ãŠã¯ãé¢æ°ã®ããªãšãŒã·ã§ã³ãççºçã«å¢ãããšãçŽæçã§èŠãã«ãããªãããšããããšæããŸãã æããã«ç§ã®2ã»ã³ãã§ãã
ãããã延æããã®ã¯è¯ãæéã®ãã¬ãŒããªãã§ããããšãããããŸãã
ããããå²åŠçã«ããã©ã«ãã_æ¬åœã«_çç¥ããŠããã®ã§ããããããããšããå®è£
ã®æéãšäºç®ã®ãã¬ãŒããªããæ£åœåããã ããªã®ã§ããïŒ long_function_names_with_lots_of_trailing_qualifiersããããæããããšãäžæ©åé²ã ãšèª°ããæã£ããé©ãããããšã§ããã:)ãããã圌ãããã·ã³ãã«ãªããŒã«ã掻çšã§ããã®ãªãããŸã 匷åãªIDEãéçºããŠããŸãããããšããã®ã¯å¥ã®åé¡ã§ãã
ç§ã¯ééããªãC ++ã®ãªãŒããŒããŒããšããã©ã«ãã®äž¡æ¹ãèŠéããŠããŸã..ããããRustsã®ä»ã®äŸ¿å©ããšC ++ã®ä»£æ¿ã®çŽæïŒé·ãé1ã€ã®äž»èŠèšèªã«åºå·ããåŸ..ïŒãšäº€æããŠæºè¶³ããŠããŸãã
å®éšã®ããã«ãç§ã¯ãããããããŒãµãŒããã¯ããšããŠå®è¡ããããšèããŸãã...ãã¯ãã®ã¬ãã«ã§åäœããŸããïŒ åŒæ°ãæ¬ èœããŠããåŒã³åºããµã€ãã§ããã©ã«ãã®exprãã€ã³ã©ã€ã³åããŸããïŒ
ç§ã¯ãããåãå
¥ããããèšèšã§ããå¯èœæ§ã¯äœãããšãç解ããŠããŸãããéã®æ©èœã§åäœããããã©ã«ãã®åŒæ°ãæã€ããšã¯_äžå¯èœ_ã§ã¯ãªããšç§ã¯ä¿¡ããŠããŸãã
ç§ããŸã æ¬åœã«æ
£ããŠããããšã®1ã€ã¯ãã¡ãœããã¯çè«çã«ã¯ãã³ã§ã¯ããã«äœ¿ãããããšããããšã§ãã
C ++ã«æ»ããšãããããŒ/äŸåé¢ä¿ã®åé¡ã®ããã«ããããæããŠããŸãïŒãããç§ãããã«ããäž»ãªçç±ã§ãïŒã®ã§ãç§ã¯ãã°ãã°æ¬èœçã«æåã«é¢æ°ã«è¡ããŸãã
ãããããrustãäžæã䜿ã£ãŠãããšãããã©ã«ããèŠéãããšãå°ãªããªããŸãã
ã¢ã€ãã¢ãæ¶ããªãããã«ã bar(Foo{y: 5, ..Foo::default()})
ã®ãããã¹ããªåŽé¢ã¯..Foo::default()
éšåã®ããã«æããŸãã
æ§é äœæ§é äœã§ãã£ãŒã«ããé€å€ããããããããã©ã«ãã«èœãšãããšãã§ããã°ããã®ã¢ãããŒãã®æ¹ãé©ããŠãããããããŸããã
ããšãã°ã次ã®ãããªé©åãªç¹æ§ïŒ Zero
ãŸãã¯Default
ãªã©ïŒãå®è£
ããæ§é ã«å¯ŸããŠã®ã¿å®çŸ©ãããæ°ãããã©ãŒã ïŒ
Foo{y: 5, *)
ããã§ã *
ã¯ä»¥åã®..Foo::default()
ã®ä»£ããã«ãªããŸãã
次ã«ãäŸã¯ãã¡ããã©ã bar(Foo{y: 5, *})
ã§ãã ãã¶ãä»ã®äººã¯Foo
ãããã«ãªãããšã奜ãã§ãããããããã¯ç§ã«ã¯ããªããããã«æããŸãã
åæåã¯ãC ++ããã°ã©ããŒãæ
£ããŠãããã®ãšã¯ç°ãªããªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã®ã°ã«ãŒãã䟿å©ã«æž¡ãä»ã®æ¹æ³ããåŒã³åºãã§æ³šéãšå€ãæ£åšãããæ¹æ³ãæäŸãããšæããŸãã
ããã¯ãã»ããã¢ãããã©ã¡ãŒã¿ããããããããã®ãäœæãããããªå Žåã«é©ããŠããããã§ãã
@pnkfelixãã®äŸã®Foo
æ§é äœã¯ãããããã¯ããã«ããããããååã«ãªããææ¡ãããç ç³ã䜿çšããŠããå®éã«ã¯æ¬¡ã®ããã«ãªããŸãã
html::start_server(html::ServerOpts{port: 10088, *});
å°ãèŠæ ããããŸãã æ°ããæ§æãä¿èšŒããã®ã«åå圹ç«ã€ã®ãããããšãããã©ã«ãåŒæ°ã®ãã¹ãŠã®ãŠãŒã¹ã±ãŒã¹ãæºããã®ã«ååãªã®ãã¯ãŸã ããããŸããã
å®éãç§èªèº«ã®äŸã䜿çšãããšãHTMLãµãŒããŒãªã©ã®å€ãã®ãªãã·ã§ã³ã䜿çšããŠäœããåæåãããšãã«ãäºåã«server_opts
æ§é äœãèšå®ããŠããã start_server(server_opts)
åŒã³åºãã®ãšåãããã幞ãã§ãã ..html::ServerOpts::default
è¡ãè¿œå ããŠãããŸããŸããã
ãããããããã©ã«ãã®åŒæ°ãæã圹ç«ã€å Žæãåèããå¿ èŠããããšæããŸãã ç§ã«ãšã£ãŠãããã¯æœåšçãªè°è«ãããããããå Žæã§ã¯ãããŸããã ãããã¯ããªããŸããªã¯ãã§ãããæ§ææ§é äœãåæåããããã®æ°è¡ã§åé¡ãããŸããã ãããã1ïŒæäœãããªãäžè¬çã§ããã2ïŒæäœã«å€ããŠã1ã€ãŸãã¯2ã€ã®åŒæ°ããããã»ãšãã©ã®å ŽåäžèŠã§ããå®å šæ§ã®ããã«å¿ èŠãªå Žåãããã©ã«ãã®åŒæ°ãã»ãšãã©èŠéããŸãã äŸãã°ïŒ
let foo = Some('a');
foo.unwrap(); // same as today
foo.unwrap('z'); // imagine that this replaced unwrap_or_default
int::from_str("4"); // same as today
int::from_str("4", 16); // imagine that this replaced from_str_radix
ãã ããããããå ¥åããã®ã§ãå®éã«ã¯åå¥ã®ã¡ãœããã®æ瀺æ§ã奜ã¿ãŸãã :)ãã¶ããç§ã¯çµå±äœã欲ããã®ãæ¬åœã«ããããŸããïŒ
@ dobkeratops ãC ++ã®çµéšãããããã©ã«ãã®åŒæ°ã§æå¹ã«ãªã£ãŠããåªããC ++ APIã®äŸãããã€ãæããŠãã ããã
https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-08-13ã®ã³ã¡ã³ãã¯ãéçºè ããããé ãå°æ¥ã®æ©èœãšèŠãªããŠããããšã瀺ããŠããããã§ãã æåã
OCamlã¯ãªãŒããŒããŒãããã«ãªãã·ã§ã³/ããã©ã«ãã®åŒæ°ãå®è¡ãããšç§ã¯ä¿¡ããŠããŸãã ããã©ã«ãå€ã®ãªãã¿ã€ãTã®ãªãã·ã§ã³ã®åŒæ°ã¯ãæé»çã«Tãªãã·ã§ã³ã«å€æãããé¢æ°ã¯å€ãæäŸããããã©ããããã§ãã¯ããå¿ èŠããããŸãã åŒæ°ãçç¥ãããããšãã³ã³ãã€ã©ã«ç¥ãããããã®ãªãã·ã§ã³ã®åŒæ°ã®å®£èšãšäœ¿çšã«ãå¶éããããŸãã ãã¹ãŠã®ãªãã·ã§ã³ã®åŒæ°ã«ã¯ã©ãã«ãå¿ èŠã§ãïŒãªãã·ã§ã³ã«ãªãã«ã¯ãããŒã¯ãŒãåŒæ°ã§ããå¿ èŠããããŸãïŒã ããã¯OCamlã®åã·ã¹ãã ãè€éã«ããŸãïŒã©ãã«ã¯é¢æ°ã®åã®äžéšã«ãªããŸãïŒããããã¯ä»ã®Hindley-Milneråã·ã¹ãã ãšçžäºéçšããªããã°ãªããªããšããã¢ãŒãã£ãã¡ã¯ãã ãšæããŸãã
C ++ããæ¥ãŠããã®ã§ãããã©ã«ãã®åŒæ°å€ãæ¬åœã«èŠéããŠããŸããŸãã ç§ã¯å€ãã®å Žåãå€æ°ã®ãã©ã¡ãŒã¿ãŒãæã€é¢æ°ã䜿çšããŸãããŸããªäœ¿çšæ³ããã¹ãã±ãŒã¹ãé€ããŠãã»ãšãã©ã®å Žåããããã®ã»ãšãã©ã¯ããã©ã«ãå€ãæã£ãŠããŸãã ããã©ã«ãå€ã®ä»£ããã«çŽç²ã«çµã¿åããé¢æ°åã®å°é¢æ°ãè¿œå ãããšãéåžžã«é·ãååã®å€§ããªæ··ä¹±ãçºçããŸãã
ããã©ã«ãã®åŒæ°ãããŒã¯ãŒãåŒæ°ãéåžžã«åœ¹ç«ã€ããšã«åæããŸãã ãªãŒããŒããŒãã®èŠ³ç¹ããäœãããå¿ èŠãããããæŠèª¬ããããããæ§æã«ã€ããŠè°è«ããå¿ èŠãããã1.0ããåã®ææ¡ã«åããŠåãçµãã¹ãã ãšæããŸãã
ããå€ãã®äººãè³æããŠã³ã¡ã³ãããŠããã®ãèŠãã®ã¯è¯ãããšã§ã:)ç§ã欲ããã£ããã1ã€ã®çç±ã¯ãã·ãŒã ã¬ã¹ã«ç¿»èš³ã§ããC ++ APIã®éãå¢ããããšã§ããã C ++ã©ã€ãã©ãªã䜿çšããããšã¯ãC ++ã§ç«ã¡åŸçããŠãã倧ããªçç±ã®1ã€ã§ãã
ã³ãã¥ããã£ãã³ã¢éçºè
ã«ã³ã¹ãããããã«_å®è£
_ã§ããã°ããããå®çŸããå¯äžã®æ¹æ³ã ãšæããŸãã
ç§ã¯ã圌ãããã£ãšéèŠãªããšãããŠããããšã«åæããŸããåæåã¯å€±ãããå€åãå埩ããC ++ã§èª¿æŽãããè³ã«ã¯ããã«ã¯ããããªãå¯èœæ§ããããŸãã
ããããASTããŒã¿æ§é ã«è§£æããããã®åºç€ãæåºãããã£ãçç±ã§ãã ä»ã®èª°ãããããæã«åã£ãŠè§£æ±ºçãèŠã€ããããšããæºåãã§ããŠããã§ãããã æåã®ãã£ãŒãããã¯ã¯ç§ãPRãããããšãæããšã©ãŸãããŸããã
C ++ããç§ã¯scalaãšpythonãããã«äœãæã£ãŠãããã矚æã®çã«èŠãŠããŸãã ãã®åªé
ããåãããã€ãã£ãã®éGCèšèªã¯çŽ æŽãããã§ãããã
.. 1ã€ã®å Žæã§ããå€ãã®æ©èœã䜿çšããäœãèµ·ãã£ãŠããã®ããææ¡ããããã®ããã²ãŒã·ã§ã³ãå°ãªããªãããã¹ãã®æ·±ããå°ãªããªãããœãŒã¹ã³ãŒãã®ãã€ãºãå°ãªããªããŸãã ã¿ã€ãã³ã°ãç°¡åã«æžãã ãã§ã¯ãããŸããã
å€åããªãã¯ãã®ããèªå·±ææžåã䞻匵ããããšããã§ããŸããé¢æ°çœ²åã¯ãããã©ã®ããã«äœ¿ããããã«ã€ããŠããªãã«ãã£ãšæããŠãããŸãã
é£ããã®ã¯ã¿ã€ããã§ãã«ãŒã§ãããããŒãµãŒããã¯ãšããŠå®è¡ãããã ãã®å Žåã埮åŠãªãã°ã®å¯èœæ§ãšæ··ä¹±ãæããšã©ãŒãé²ããŸãã
ãã®ãããªããšãæžãããšãã§ãããã©ããæ³åããŠã¿ãŠãã ããã
fn substr(a:&str, start:int, end:int=a.len())->~str
ãšã©ãŒãã§ãã¯ãªãã§ãã®çš®ã®ãã®ãASTã«ããã¯ããã ãã§ãå€ãã®ããšãããŸããããªãå¯èœæ§ããããšç¢ºä¿¡ããŠããŸã..ããããæåŸ ã©ããã«ãããä¿®æ£ã§ãããã©ããæ³åããŠã¿ãŠãã ãã:)
ãã ã®ãã°ã ã¡ãªããã«ã€ããŠã¯è°è«ã§ããŸããããªãªãŒã¹ã劚ããããšã¯ãããŸããã
@tautologicoã圌ã®ã³ã¡ã³ãã§èª¬æããŠããæ¯ãèãã奜ãã§ãã
Rustã«é©çšãããšãããã¯æ¬¡ã®ããã«å€æããããšæããŸãã
fn ga(bu: int, zo: Option<int>, meu: Option<int>) {
let zo = zo.get_or_default(42);
let meu = meu.get_or_default(99);
...
}
ãããŠããããã¯ãã¹ãŠæå¹ãªåŒã³åºãã«ãªããŸãïŒ
ga(10, 20, 30); // 20 and 30 are automagically
// converted to Some(20) and Some(30)
ga(10, 20); // ga(10, 20, 99)
ga(10); // ga(10, 42, 99)
ga(10, None, None); // ga(10, 42, 99)
ga(10, 20, None); // ga(10, 20, 99)
ga(10, None, 30); // ga(10, 42, 30)
èŠåã¯ãæ«å°Ÿã®Option<T>
ãã©ã¡ãŒã¿ãŒã¯çç¥ã§ãããšããããšã§ãã ããã§ã¯ã Option
ã¿ã€ããåå©çšãããŸãããããã«ããåé¡ãçºçããå Žåã¯ãå¥ã®ããå
·äœçãªOptParam
ã¿ã€ããäœæã§ããŸãã
ãã®ææ¡ã«ãããçºä¿¡è ã¯ããã®äœçœ®ã«é¢ä¿ãªããæäŸããããã©ã¡ãŒã¿ãŒãšããã©ã«ãã®ãŸãŸã«ããŠãããããã©ã¡ãŒã¿ãŒãæ£ç¢ºã«éžæã§ããŸãã ãŸãããã©ã¡ãŒã¿ãªã¹ãã«ããã©ã«ãå€ã衚瀺ãããªãã®ãè¯ãããšã ãšæããŸãã ãã®ããã«ãããã©ã«ãå€ã¯å®æ°åŒã«éå®ãããããªããžã§ã¯ãã®ç¶æ ã«äŸåããããä»ã®ãã©ã¡ãŒã¿ãŒã«äŸåããå¯èœæ§ããããŸãã
GUIãã€ã¢ãã°ããã¯ã¹ã衚瀺ããé¢æ°ã®å®éã®äŸïŒ
fn showDialog(message: ~str,
parent: Option<Widget>,
title: Option<~str>,
type: Option<DialogType>,
icon: Option<Icon>) { ... }
// Display an info box in the middle of the screen.
// Set the title to "information", translated in the current locale
// Set the icon to an "info" icon
showDialog(~"hello, world!");
// Display a warning box in the middle of the screen.
// Set the title to "warning", translated in the current locale
// Set the icon to a "warning" icon
showDialog(~"sick, sad world!", None, None, WarningDialog);
// Display a warning box in the middle of the screen.
// Set the title to "warning", translated in the current locale
// Set the icon to a custom icon
showDialog(~"sick, sad world!", None, None, WarningDialog, bugIcon);
ãã®äŸã§ã¯ïŒ
parent
ã®ããã©ã«ãå€ã¯None
ïŒèŠªãªãïŒã§ãtype
ã®ããã©ã«ãå€ã¯InfoDialog
icon
ã¯ã type
å€ã«ãã£ãŠç°ãªããŸããtitle
ã¯ã type
ã®å€ãšçŸåšã®ãã±ãŒã«ã«ãã£ãŠç°ãªããŸããçŸåšãæ°ããããªããã£ãåãšããŠOption
ãè¿œå ããããšãææ¡ããŠããŸãã æãªããã®enum
ãªã®ã§ãä»ã¯å®å
šã«ã©ã€ãã©ãªæ©èœã§ãã
IMOã®ããã©ã«ãã®åŒæ°ã¯ããŒã¯ãŒãåŒæ°ã®æ¹ã10åååªããŠããããšãä»ãå ããããšæããŸãã ããã©ã«ãã®åŒæ°ã®ã¢ã€ãã¢ã¯å¥œãã§ã¯ãããŸããããããŒã¯ãŒãã®åŒæ°ã¯å¥œãã§ã¯ãããŸããã
äžæ¹ã¯ããäžæ¹ãžã®è¶³ãããã§ãããããã©ã«ãã¯ããèªäœã§ãŸã æçšã§ããããã€ãã®è¿œå ã®ãã©ã°ããããŸããããã©ã«ããå¿
èŠãªå Žåã¯ãããããçç¥ã§ããŸãã
ããªããäž¡æ¹ãæã£ãŠãããªãã°ããããã¯ããŸãçµåããããšã«åæããŸããã
ãã ããã®ãã€ã³ãã¯å®éã«ããããå®è£
ããŠããŸã:)
ãããã¿ã€ããã§ãã«ãŒ/ã¿ã€ãæšè«åšã«åŸä»ãããæ¹æ³..ãŸãã¯ãããã¹ãããã«å
¥ããä»ã®æ¹æ³ã
äœçœ®åŒæ°ã®ããã©ã«ãå€ã¯ãäžå¯è§£ãªã³ãŒãã«ãªããŸãã ããŒã¯ãŒãåŒæ°ã®ããã©ã«ãã ãã§ã¯ãªãã®ã¯ãªãã§ããïŒ ïŒããããå®è£ ãããŠããå ŽåïŒã
IMO ...ãã®ãã©ã¡ãã-ãŸãã¯ãã§ã¯ãããŸããã
ã©ã¡ãã䟿å©ã§ãã 1ã€ã¯å®è£
ãç°¡åã§ãæ§æã®éžæè¢ãå°ãªããªããŸãã
ã§ãããããããå®è¡ããããšããŸãã¯æåã«ãããèžã¿å°ãšããŠå®è£
ããããšããããšã¯çã«ããªã£ãŠããŸã...
ããã©ã«ãã®å€ãçç¥ãããšãéåžžã®é¢æ°åŒã³åºããããäžå¯è§£ã«ãªããŸããïŒ C ++ããã°ã©ããŒã¯ããã§ã«thsiã®ãã©ã¡ãŒã¿ãŒããœãŒãããããšã«æ £ããŠããŸãã éåžžãããçš®ã®å¶åŸ¡ãã©ã°ã®åèªã¯ãæåŸã«é©åãªããã©ã«ãããããŸããéèŠãªæ å ±ã®ã¿ããªã¹ãããããšã§æ確ã«ããããã«ãïŒ..ãBLAH_DEFAULTïŒãæžã蟌ã代ããã«ãå€ãçç¥ããŸãã Rustãå¿ èŠãšãã人ã ã¯ããã§ã«C ++ãæ±ã£ãŠããå¯èœæ§ãé«ããããããã«æ £ããŠããŸãã
ç§ã¯ä»æ¥ãäžèšã®ææ¡ïŒæ§é äœã¯ããŒã¯ãŒãåŒæ°ã®èŠçŽ ããã§ã«æäŸããŠãããšèŠãªããŠãããããæ¢åã®struct-extensionæ§æãå©çšããŠããã©ã«ãã®åŒæ°ã«è¿ããã®ãæäŸããããšããïŒããææ¡ããŠããæ§æãšãã1ã€ã®éèŠãªåé¡ãç¡èŠããŠããããšã«æ°ä»ããŸããã _every_åŒæ°ã®ããã©ã«ããæäŸã§ãããšä»®å®ããŸããïŒãããŠããããã¯ãã¹ãŠåäžã®æ§é äœãã©ã¡ãŒã¿ãŒã«æã¡äžããããŸãïŒã
ãã¡ãããããã¯äžè¬çã«ã¯åœãŠã¯ãŸããŸããã1ã€ã«ã¯å¿ é ã®åŒæ°ããããä»ã®åŒæ°ã«ã¯ãªãã·ã§ã³ãããããšããããããŸãã
é¢æ°å®£èšã®æ§æãããã«ããããåãã®ã§ã¯ãªãããã§ã«æã£ãŠããæ©èœã掻çšããæ¹æ³ãèŠã€ããããšæããŸããããã¯äž»ã«ãé¢æ°/ã¯ããŒãžã£/ã¡ãœãããæžãçããããŸããŸãªæ¹æ³ã®ãããã§ãé¢æ°å®£èšã_ãã§ã«æ¯æ·±ã_ããã§ãã
ç§ã®çŸåšã®ãã¬ã€ã³ã¹ããŒãã³ã°ã¯ãããããæ§é äœã¢ã€ãã ã®å®çŸ©ã«ãã£ãŒã«ãã®ããã©ã«ãåŒãè¿œå ããããšã«ãã£ãŠãæ¢åã®æ§é äœæ§æã掻çšã§ãããã©ããã«çŠç¹ãåœãŠãŠããŸãã ããã«ãããåé€ã§ãããã£ãŒã«ããšå¿ èŠãªãã£ãŒã«ããèšå®ã§ããããã«ãªããŸãã äœãã®ãããªãã®ïŒ
struct Foo { x: int = 0, y:int = 0, z:int = 0 }
fn bar(f: Foo) {
printf!(f);
}
struct Baz { x: int, y: int, z:int = 0 }
fn quux(g: Baz} {
printf!(g);
}
fn main() {
bar(Foo{y: 5});
quux(Baz{y: 5}); // ~ERROR: required field, `x`
}
@pnkfelixç§ã¯ãã®ææ¡ã奜ãã§ããåãå éšæ§é äœã掻çšããã®ã¯ããã»ã©é£ããããšã§ã¯ãªããããããŸããããå¿åã®æ§é äœãçæããã§ãããã ãããã£ãŠãäŸããšããšãããã¯äºå®äžãæ§é äœãæšæž¬ããããã®ã³ã³ãã€ã©ã®éæ³ãå°ãå ããåãã³ãŒãã«ãªããŸãã
fn bar({ x: int = 0, y:int = 0, z:int = 0 }) {
printf!(f);
}
fn quux({ x: int, y: int, z:int = 0 }) {
printf!(g);
}
fn main() {
bar({ y: 5 });
quux({ y: 5 }); // ~ERROR: required field, `x`
}
@visionmedia @bstrieæ§é äœåãåé€ããããšã«ã€ããŠæ¬åœã«å¿é ããå¿ èŠããããŸããïŒ åãã€ã³ã䜿çšå®£èšã¯ãåŒã³åºããµã€ãã§ã®è¿œå æåã®æå°æ°ã3ïŒåå+å·Šå³ã®æ¬åŒ§ã®å ŽåïŒã«
ã€ãŸããbstrieãç§ã«æ瀺ããServerOptsã®äŸã§ã¯ïŒ
fn main() {
use O = html::StartServerOptions;
...
html::start_server(O{port: 10088});
}
@pnkfelixç§ã¯å¥œãã§ã
struct Foo {
x: int = 10,
y: float = 1.0
}
æ§æã§ãããè³¢æãªåŒ·å¶åŒæ°ïŒæ®å¿µãªããååã¯ä»ããããŠããŸããïŒãååŸããããã«å¿ èŠã§ã¯ãªããšæããŸãã匷å¶åŒæ°ãåå¥ã«æž¡ãã ãã§ãã
struct FooOptions { ... }
static default: FooOptions = FooOptions { ... };
fn foo(compulsory: int, required: uint, necessary: float, optionals: FooOptions) { ... }
FWIWãããã©ã«ãå€ã®ã¢ã€ãã¢ãæã€æ§é äœã奜ãã§ãã ç§ã¯ããã次ã®ã·ã§ãŒãã«ããã«ãªããšæããŸãïŒ
struct Test {
m: int,
y: int
}
static DEFAULT: Test = Test{m: 10, y: 15};
Test{y: 5, ..DEFAULT}
å®çŸ©å ã®æ§é äœã®ããã©ã«ããæ°ã«å ¥ã£ãŠããŸã
ãã®æ§æã§è§£æããããšãã§ããŸãããå®éã«ã¯äœ¿çšãããŠããŸãããã¿ã€ããã§ãã«ãŒã®ãœãŒã¹ãªã©ãåé¿ããæ¹æ³ããŸã ããããŸããã
ãããããããã©ã«ãã®ã¡ã«ããºã ããã§ã«ååšãããšããäºå®ã«ãããå®è£ ãå°ãç°¡åã«ãªãå¯èœæ§ããããŸãã
åã å¿åã®æ§é äœã¯å
ã
æã£ãŠãããšæããŸããããå¥åŠãªçžäºäœçšã®ããã«ãããããåé€ããå¿
èŠããããŸãããïŒ
ç§ã¯äž¡æ¹ã®ã¡ã«ããºã ãå©çšã§ããããã«ããããšæããŸãã ãããããã©ã¡ãŒã¿æ§é äœã¯_keyword_åŒæ°ã®å¿
èŠæ§ã軜æžããŸãããc ++ã®ãããªæ«å°Ÿã®ããã©ã«ãã¯äŸç¶ãšããŠäŸ¿å©ã§ã
åèã®ãã -
http://www.parashift.com/c++-faq-lite/named-parameter-idiom.html
ç¬-èå³æ·±ããæ¬åœã®ããŒã¯ãŒãåŒæ°ã¯ããã®ãããªå®åçãªéãããã¯ã®å¿
èŠæ§ãåé¿ããã§ããã
åã å¿åã®æ§é äœã¯å ã æã£ãŠãããšæããŸããããå¥åŠãªçžäºäœçšã®ããã«ãããããåé€ããå¿ èŠããããŸãããïŒ
å ã ããã¹ãŠã®æ§é äœã¿ã€ãã¯æ§é äœã§ããã ç¹æ§ãšã®åä»ãªçžäºäœçšã®ããã«ããããã¯åé€ãããŸããïŒåç®äžã®æ§é äœã¿ã€ãã«çœ®ãæããããŸããïŒã
æ§é äœå®çŸ©ã®ã¢ã€ãã¢ã®ããã©ã«ãå€ã奜ãã§ãã ããã¯ç解ããããããã§ãå°ãªããšãæ§é äœãæ§ç¯ãããšãã«ãã¹ãŠã®ãã£ãŒã«ããåæããå¿ èŠããããŸãããããã¯ãæ°ããããªãã·ã§ã³ããã£ãŒã«ããè¿œå ããããšãã«ãã¹ãŠã®åŒã³åºããµã€ãã次ã®ããã«å€æŽããå¿ èŠãããããšãæå³ãããããããªãã·ã§ã³ãã¿ã€ãã®æ§é äœã®åé¡ã§ãã 0 / None / etcã«åæåããŸãã
PerlïŒããã©ã«ãã¯ã¢ãããã¯ãã¿ãŒã³ïŒãPython 2ïŒ foo() takes at least 2 arguments (2 given)
ååŸã§ããïŒãããã³Python 3ïŒããã©ã«ããªãã§ååä»ãã®ã¿ã®åŒæ°ãæã€ããšãã§ããïŒããæ¥ãŠãç§ã¯è¬èã«ææ¡ããŸãïŒè¿œå é¢æ°ã®æåŸã®åŒæ°ãšããŠæ§é äœã宣èšã§ããããã«ããããã®ç ç³ã®_teeny_ãããããã ããåŒã³åºãå
ã¯æ§é äœãã£ãŒã«ãã_ã€ã³ã©ã€ã³_ããŸãã
äŸãã°
impl int {
struct FromStrOptions {
radix: uint = 10
}
fn from_str(s: str, opts: FromStrOptions) -> int {
// ...
}
}
int::from_str("4", radix: 10);
å©ç¹ïŒ
do
ãããã¯ãæž¡ãæ¹æ³ã«äŒŒãŠããŸããããã¯ãçŽç²ã«åŒã³åºãå
ã®æžå¿µäºé
ã§ãã ïŒæ§é äœã§ããããkwargsã«äœ¿çšãããããšãæå³ããŠããªãæåŸã®åŒæ°ãããå Žåããªããã€ã³/ãªããã¢ãŠãããæ¹æ³ãå¿
èŠã§ããïŒèª°ãæ°ã«ãªããŸããïŒèª°ãdo
æ°ã«ããªããšæããŸã**kwargs
ãããªãã®ïŒæ§é äœãäœæãã代ããã«äœçœ®åŒæ°ãšããŠæž¡ãã ãã§ããçæïŒ
5
ãæž¡ããŠãé¢æ°ã®argspecããåãæšæž¬ããã ãã ãšæããŸããdo
ã€ãã£ãªã ãšã©ã®ããã«çžäºäœçšãããã¯äžæã§ãã _written_ã®æåŸã®åŒæ°ã§ããå¿
èŠããããšèšãã®ã¯ç°¡åãããããŸãããã€ãŸãã do
䜿çšããå Žåã«ã®ã¿ãæåŸãã2çªç®ã®åŒæ°ãšããŠæ©èœããŸããFWIW int::from_str("4", radix: 10)
ã¯ã以åã«ææ¡ããããååž°å±æŒç®åãšããŠã®:
䜿çšãšç«¶åããŸãã
ASCIIã«ãã£ãŠå€±æããåªãã
int::from_str("4", radixâ 10)
ããŒã¯ãŒãåŒæ°ã«=ã䜿çšããããšã«æ祚ããŸãããéšååŒå ã§ã®Cã®å²ãåœãŠã®ã¢ã€ãã¢ãçŠæ¢ããŸãããããcã®ãããªæ§æã«ã©ã®ããã«é©åãããã®å¯èœãªäŸïŒ
ãããå®è£ ããæ¹æ³ããã¬ã€ã³ã¹ããŒãã³ã°ããå Žæã¯ãããŸããïŒåŒæ°ã®æ°ã«åºã¥ãé¢æ°ã®ãªãŒããŒããŒãã®ããã«ãå€æ°arguemntã¹ã¿ã€ã«ãå éšçã«å®è£ ã§ãããã©ããçåã«æããŸããïŒåŒæ°ã®æ°ãé¢æ°åã«åŸçœ®ãããŠãããã®ããã«..ïŒ
ããã«ã€ããŠã¯æšå€ã®æ¯é±ã®
é¢æ°å®£èš/åŒã³åºããã©ãŒã ãããã«è€éã«ããã®ã¯è¯ããªãããšããããŠä»¥åã®ã³ã¡ã³ãã§ç€ºåãã
ããŒã ã¯ãŸãããããäœããã®æ¹æ³ã§è§£æ±ºããããšã¯ã1.0ãªãªãŒã¹ã®åªå äºé ã§ã¯ãªããšå€æããŸããã ãããžã§ã¯ããªãŒããŒã®@brsonã¯ããã®ã¿ã¹ã¯ã®ãããã¿ã€ãã³ã°ã¯1.0以éïŒ1.1ãªãªãŒã¹ãªã©ïŒã«ä»»ããããšãææ¡ããŸããã
ããã¯ããã¹ãŠã®è²¢ç®è ãžã®åŒ·åãªãã³ãã§ãã奜ããªãã®ããã¹ãŠããã¯ããŸããã1.0ããªãªãŒã¹ããããŸã§ããã®ãã°ã®ãã«ãªã¯ãšã¹ããr +ãéä¿¡ããªãã§ãã ããã
äŒæ¿ãRustã¯çŽ æŽãããèšèªã§ãã ããã¯ãšãŠãå€ãã®ããšãæ£ããè¡ããŸããããã¯é¢çœããããããŸããã ãããããã®æ©èœããã¹ã1.0ã«å»¶æããã®ã¯ééãã ãšæããŸãã
詳ãã説æãããŠãã ããã
åªããAPIèšèšã®ããã«ãããã©ã«ãã®é¢æ°åŒæ°ã¯_ã¯ãªãã£ã«ã«_ã§ãã ãããããªããããä»ã®æ¹æ³ã§ã¯ããåçŽãªAPIã«ãªããã®ãè€éã«ãªããŸãã stdã©ã€ãã©ãªã®äŸïŒ
concat
代ããã«ã concat
ãšconnect
ãsplit_iter
ãšsplitn_iter
split_iter
ã¯ããªãã·ã§ã³ã®count
䜿çšããŠsplit_iter
ãè¶
ããŠããŸãã rsplit_iter
ãšrsplitn_iter
åãã§ãããã®ä»ã
ããã©ã«ãã®åŒæ°ã§åé€ã§ãããããã®äœåãªé¢æ°åããã¹ãŠæã€ãšãèªç¥çè² è·ãäžå¿ èŠã«å¢å ããŸãã ãŠãŒã¶ãŒã¯ã1ã€ã§ã¯ãªã2ã€ïŒãŸãã¯ãã以äžïŒã®ååãç¥ã£ãŠããå¿ èŠããããŸãã
ããã©ã«ãã®åŒæ°ã1.0以éã«å»¶æãããå Žåãäžäœäºææ§ã®ãããstdã©ã€ãã©ãªå ã®ãããã®é¢æ°ãåé€ã§ããŸããã ã€ãŸããå°æ¥ããã©ã«ãã®åŒæ°ãè¿œå ãããé¢æ°ã®ãããã©ãããŒãžã§ã³ãä»ã®ããªã¢ã³ãã®äœæ¥ãå®è¡ã§ããããã«ãªã£ããšããŠããå€ãããªã¢ã³ãã¯æ®ããéçºè ã¯èª°ãã確å®ã«äœ¿çšããããããããã«ã€ããŠç¥ãå¿ èŠããããŸããããšãééã£ãŠãããšããŠãããããã
ãã®ãããäœåãªèªç¥çè² è·ã¯_æ°žé ã«_æ®ããŸãã
[泚ïŒãã©ã¡ãŒã¿ãŒåããŒã¹ã®é¢æ°ã®ãªãŒããŒããŒãã«ã€ããŠãåãè°è«ãããããšãã§ããŸãïŒçŸåšã®ç¹æ§ããŒã¹ã®åé¿çã¯ç ©éãããŠãstdã©ã€ãã©ãªé¢æ°ã¯ããã䜿çšããŸããïŒãããã®åé¡ã¯ãã®è°è«ã®å Žã§ã¯ãããŸããã]
Rustã®éçºè ãRustã«åãçµã¿ãçŽ æŽããããã®ã«ããŠãããŠããããšãïŒ
ç§ã¯ãé ãæªæ¥ãã®ãã€ã«ã¹ããŒã³ãè¿œå ããŠãã³ã¢ããŒã ã®ç§ãã¡ããã®åé¡ã«2çªç®ã®æéãè²»ãããŠãã人ã«äŒããããšãã極端ãªèœèã匷調ããŠããŸãã ä»ããRustã«è²¢ç®ãããå Žåã¯ããã€ã«ã¹ããŒã³1ïŒæ確ãªå®çŸ©ïŒã®41ã®æªè§£æ±ºã®ãã°ã®1ã€ã«åãçµãã§ãã ããã
https://github.com/mozilla/rust/issues?milestone=12&state=open
ãŸãã¯ãã€ã«ã¹ããŒã³2ã®104ã®æªè§£æ±ºã®ãã°ã®1ã€ïŒäžäœäºææ§ïŒïŒ
https://github.com/mozilla/rust/issues?milestone=13&state=open
ãŸãã¯ãã€ã«ã¹ããŒã³3ã®68ã®æªè§£æ±ºã®ãã°ã®1ã€ïŒããæç¹ã§åæããæ©èœã¯Rust 1.0ããªãªãŒã¹ããããã«éèŠã§ãïŒïŒ
https://github.com/mozilla/rust/issues?milestone=14&state=open
ãŸãã¯ããããã®ãã°ã®1ã€ã«ã³ã¡ã³ãããŠã説æãæ±ããããé²æ©ãéããæ¹æ³ãææ¡ãããããããšãã§ããŸãã ããã¯213åã®ãã°ããéžæã§ããŸãã ãã®æç¹ã§ãããã®ãããããé²æ©ãããããšã¯ããã®åé¡ãããRustã«ãšã£ãŠã¯ããã«äŸ¡å€ããããŸãã ãããŠããããã®ãã°ã®1ã€ãéããããšãã§ãã人ã¯èª°ã§ããç§ãã¡ã®æ倧ã®æè¬ãæã£ãŠããŸãã
ã³ã¢ããŒã ã«ã¯ãã£ãšéèŠãªããšãããããšãããããŸãããã極端ãªèœèãäŒãããã®ã¯æ®å¿µãªããšã®ããã§ã:(
valloricsã³ã¡ã³ãã«+1ã ããŒãã³ã°ã¯é£ããã§ããããã¥ã¡ã³ããæãäžããŠãããå€ãã®ååãåŠã¶ããšã¯äžå¿«ã§ã..; ããã©ã«ãã®args / overloardingã«ãããç°¡åã«ãªããŸãã ããŒã¯ãŒãåŒæ°ã䜿çšãããšãããã«ã€ããŠC ++ãè¶
ããæ©äŒããããŸãã ïŒgithubã«æ祚ããŠãããããã®ã§ãããããã§ããå°ãæ鳎ã代ããã«+1ãæŒãããšãã§ããŸãç¬ïŒ
@Valloricç§ã¯ïŒåã«èšã£ãããã«ïŒå®å šã«åæããAPIèšèšã«åœ±é¿ãäžãããããrustã³ã¢ããŒã ããªãã·ã§ã³ã®åŒæ°ãåæ€èšããããå°ãªããšãåæ€èšããããšãæ¬åœã«æãã§ããŸãã ååä»ãargsã¯ãã»ãšãã©ãåŒã³åºããµã€ãã«åœ±é¿ãäžããããã確å®ã«åŸ æ©ã§ããŸãïŒãã¡ãããargsã«ååãä»ãããšãargsã®ååã¯APIèšèšã®äžéšã«ãªããããããããªåœ±é¿ã¯ãããŸãããargsãååãä»ããå ŽåãBCãç Žããããªåœ±é¿ã¯ãããŸãããååä»ãåŒæ°ãå°å ¥ããããšã¯ãªãŒã³ã¢ãããããŸãïŒã
ãããåªããèšèªæ©èœã«ãªããšããã³ã³ã»ã³ãµã¹ã¯ãããŸããã ãŸããååä»ã/ããã©ã«ãã®ãã©ã¡ãŒã¿ã«ã€ããŠãã¹ãŠã®è©³çŽ°ãç·Žãããå ·äœçãªææ¡ã¯ãããŸããã éåžžã«æ¬è³ªçã§ãªãæ§æç³è¡£ã倢èŠãåã«ä¿®æ£ãŸãã¯åé€ããã³ã¢èšèªæ©èœã®æ¢åã®ã»ãããããããã1.0ã§ã¯çºçããŸããã
ã倢èŠãããšã¯ãäœã空æ³çãªãã®ã®ããã«èãããŸããããããã®æ©èœã¯ä»ã®èšèªã§èšŒæãããŠããŸãã ã·ã³ã¿ãã¯ã¹ã·ã¥ã¬ãŒã ãã§ãªããããã²ãŒãããå¿ èŠã®ããã³ãŒãã®éãæžãããåŠç¿ããå¿ èŠã®ããèšå·ã®æ°ãæžãããŸãã
éåžžã«æ¬è³ªçã§ãªãæ§æç³è¡£ã倢èŠãåã«ä¿®æ£ãŸãã¯åé€ããã³ã¢èšèªæ©èœã®æ¢åã®ã»ãããããããã1.0ã§ã¯çºçããŸããã
ä¿®æ£/å®è£ ããå¿ èŠã®ããä»ã®èšèªæ©èœãããã»ã©éèŠã§ã¯ãªããšèšã£ãŠããã®ã§ã¯ãããŸããã 圌ãã¯ããããããã§ãã ããããããã¯ã©ã¡ãã§ããããŸããã ç§ãèšã£ãŠããã®ã¯ããã®æ©èœããªãå Žåã¯stdã©ã€ãã©ãªã®APIã®å質ã«åœ±é¿ãäžããããããã®æ©èœã¯ïŒä»ã®æ©èœã«å ããŠïŒ1.0ã§åŒ·ãæ€èšããå¿ èŠããããšããããšã§ãã
ããã¯ããããç©è°ãéžãæèŠã§ãããIMOããã°ã©ãã³ã°èšèªã¯ããããã®ã³ã¢æ©èœããããæäŸããAPIã«ãã£ãŠçããŠæ»ãã§ãããŸãã Pythonã®ãããããªãŒãå«ãŸããŠãããstdã©ã€ãã©ãªã¯èšèªå šäœã販売ããŸããã CPANã¯Perlãåç¶ãããŸãã .Netã¯ãCïŒã³ãŒãã®èšè¿°ãçŽ æŽããããã®ã«ããŸãããããŠãã¹ã©ã€ã¹ããããã³ä»¥æ¥ãLINQã¯æé«ã®ãã®ã§ãã C ++ã®æ倧ã®å€±æã®1ã€ã¯ãåªããæšæºåãããAPIã®æ¬ åŠã§ãã çã
APIã¯èšèªã®æåã«äžå¯æ¬ ã§ããããã_good_APIã®äœæãå¯èœã«ããæ©èœããå¿ é ã®æ§æç³è¡£æ§æããšããŠç Žæ£ããªãã§ãã ããã
@dobkeratops ïŒ_dreaming up_ãšèšãããšã§ãå®å šãªææ¡ããªãããŠããªãããšã匷調ããããšããŠããã®ã§ãææ決å®ã®æ®µéã§ã¯ãããŸãã
ãã®è°è«ã¯éçç£çã§ãã ããã誰ãã®æéãç¡é§ã«ããã®ãé²ãããã«ãç§ã¯åé¡ãéããã€ããã§ãã 誰ããä»ãã1幎åŸããŸãã¯ãã以éã«ãããåéãããïŒãŸãã¯æ°ããåé¡ãéå§ãããïŒå Žåã¯ãããã§åé¡ãããŸããã
誰ããã»ãšãã©ãã¹ãŠã®è©³çŽ°ïŒææ³ãã»ãã³ãã£ã¯ã¹ïŒã解決ããææ¡ãæãã€ããå Žåã¯ããããã¡ãŒãªã³ã°ãªã¹ãã«æçš¿ããããšããå§ãããŸãã ãããè¡ãç¹å®ã®æ¹æ³ã_æ£ããæ¹æ³_ã§ãããšããã³ã³ã»ã³ãµã¹ã«éããå Žåã¯ãåé¡ãéããŠã once
é¢æ°ãªã©ã®ãã©ã°ã®èåŸã«ããå®éšçãªæ©èœãšããŠå®è£
ããã®ãçã«ããªã£ãŠããŸãã
ç§ã¯2çªç®ã®@ thestinger-誰ãïŒãŸãã¯å°æ°ã®äººã ïŒãå®å šãªææ¡ãæã£ãŠããå ŽåããŸãã¯è°è«ã®ããã«ããã€ãã®æ確ã«ç¶Žããã空çœã®ã¹ããããããææ¡ãæã£ãŠããå Žåããã®äººããããå®è¡ããã®ãé©åã§ãããã¡ãŒãªã³ã°ãªã¹ãã§ã ããã¯ç§ãã¡ããã®ææ¡ãå®è¡ãããšããçŽæã§ã¯ãããŸããããã¢ã€ãã¢ã圢åŒåãããããä»ã®èšèªæ©èœãšã©ã®ããã«çžäºäœçšãããã説æããäœæ¥ãè¡ããšãææ¡ã®äŸ¡å€ãå€§å¹ ã«é«ãŸããŸãã
@thestinger @catamorphismå¿ãéããŠãããŠããããšãïŒ æéãããã°ãææ¡æžãäœæããŠrust-devã«éä¿¡ããŸãã
ãã®æ©èœã«ã€ããŠè°è«ããæ確ãªä»æ§ãæžãããã«ããããäœæããŸããïŒ https ïŒ
ãããåéããŸãã ããã¯åªå äºé ã§ã¯ãããŸãã-ãããªããã°ãªããªãããšããã§ã«å€ãããŸã-ããããããã¯äººã ãæãã§ããæ©èœã§ãããããã¯å®å šã«ããŒãã«ããå€ããŠããããã§ã¯ãããŸããã ãã®ä»¶ã«é¢ããäŒè©±ãæ¢ããããããŸããã
@brsonããããšãããããŸãïŒ
ã€ãŒãµããããžã®ãªã³ã¯ã䜿çšããŠå ã®åé¡ãç·šéããŸããã
ããã«ã¡ã¯ã
ãããã®äœæ以æ¥ãå€ãã®èšèšææ¡ã質åãåé¡ãªã©ã«ãã£ãŠå®æãããŠããŸã...
ããã§ããã£ã¹ã«ãã·ã§ã³ãããããèŠçŽãããããã®2çªç®ã®ããããäœæããŸããããã®ãããã¯ãæ©èœèŠæ±ãæ£ç¢ºã«èª¬æããããã«äœ¿çšãããŸãã
ããã«URLãåããïŒ https ïŒ
@KokaKiwiãã¹ãŠã®ãããã空ã«ãªããŸããã å 容ã¯ã©ãã«è¡ããŸãããïŒ
@cmr ãç§ã¯æšæž¬ããŸãïŒ
èŠåïŒãã®ãããã¯ãç·šéããã«30æ¥ãçµéãããšåé€ãããŸãã ãããèµ·ãã£ãåŸãããããå埩ããæ¹æ³ã¯ãããŸããã®ã§ã泚æããŠãã ããïŒ
ïŒãããã£é¢ïŒ
ç§ã¯å®éã«MozillaEtherpadã€ã³ã¹ã¿ã³ã¹ã§äœæããããããæ€çŽ¢ããŠããŸãïŒãã®ã±ãŒã¹ãé²ãããïŒããå±¥æŽã«èŠã€ãããªããããããã«ãªã³ã¯ãå ¬éããã®ãå¿ããŸãã:(
@cmr @huonw @KokaKiwi ããã©ãŠã¶ã®å±¥æŽã«ãã2ã€ã®ãªã³ã¯ã¯æ¬¡ã®ãšããã§ãã
https://etherpad.mozilla.org/CQEDa85jLX
https://etherpad.mozilla.org/78FA1bozLd
@dramãããç§ãæ¢ããŠãããã®ã§ãïŒ ããããšãïŒã¹ãã€ãªãŒïŒ
ãã¶ããåé¡ã¯æ°ãããªã³ã¯ã§ç·šéããå¿
èŠããããšæããŸãã
ïŒç·šéæžã¿ïŒ
ç§ã¯ãããè¿œå ããæå³ã®ãããã®ã¯äœããããŸããããããã¯ç§ãèšèªã«ãã£ãšæéãè²»ããåã«ç§ã泚ææ·±ãèŠãŠãããã®ã®1ã€ã§ãã ãã®æ©èœãåããèšèªïŒObjective-Cããã³PythonïŒããæ¥ãŠããã®ã§ãååä»ããã©ã¡ãŒã¿ãŒã¯ãä»ã®äººã®ã³ãŒããããèªã¿ãããããæ¹æ³ã®ãããçç£æ§ãéæ¥çã«å€§å¹ ã«åäžããããšæããŸãã
å ·äœçãªææ¡ã¯ãæ°ããRFCããã»ã¹ãéããŠè¡ãå¿ èŠããããŸãïŒ https ïŒ
ããã«ã¯çžåããã¢ã€ãã¢ãå€æ§ãªäŒè©±ã®ã¹ã¬ãããå€ãããŠãæçšãªãã£ã¹ã«ãã·ã§ã³ãšãªã¢ã«ã¯ãªããŸããã
æãåèã«ãªãã³ã¡ã³ã
ããªã¢ãŒãž2013-08-05 :(ç§ãç¥ã£ãŠããïŒé²æ©ã¯ãããŸããããããã§ããã¡ããšããŠããŸãã å€å宣èšæ§æã¯æ¬¡ã®ããã«ãªããŸã
ããã§ãRHSã¯ä»»æã®å®æ°exprïŒã€ãŸãã
static
宣èšã§æå¹ãªãã®ïŒã§ãã