rb_scan_args() ã«option hash対応を組ã¿è¾¼ã‚€ã®ã¯ã©ã†ã§ã—ょã†ã‹ã€‚
実装ã—ã¦ã¿ãŸã®ã§ãƒ‘ッãƒã‚’添付ã—ã¾ã—ãŸã€‚
argc = rb_scan_args(argc, argv, ":12", &opt, &path, &mode, &perm);
ã®ã‚ˆã†ã«é ã« : ã¨æ›¸ãã¨ã€å¿…é ˆå¼•æ•°ã‚ˆã‚Šå¤šãã®å¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã€ãã®
最後ã®å¼•æ•°ãŒHash(ãªã„ã— #to_hash ã§å¤‰æ›å¯èƒ½)ãªå ´åˆã«å–å¾—ã•ã‚Œã¾ã™ã€‚
 ãªãŠã€Rubyã§ã¯
def open(path, mode = File::RDONLY, perm = 0666, opt = nil)
ã®ã‚ˆã†ã«æ›¸ãã“ã¨ãŒå¤šã„ã§ã™ãŒã€ã“ã‚Œã«ä¾å˜ã—㦠option hash を与ãˆ
ãªã„å ´åˆã«(空ã®Hashã§ãªã) nil を渡ã™ç¿’æ…£ãŒå˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ã“ã®
ã¨ãã«èªã¿æ¨ã¦ã‚‰ã‚ŒãŸ nil ãŒã‚ã£ãŸã‹ã©ã†ã‹ã‚’判定ã§ãるよã†ã«ã™ã‚‹
ãŸã‚ã€è¿”り値ã¯å…ƒã® argc ãã®ã¾ã¾ã§ã¯ãªã〠option hash (nil ã®
å ´åˆã‚’å«ã‚€)を除ã„ãŸæ•°ã‚’è¿”ã™ã‚ˆã†ã«ã—ã¦ã¿ã¾ã—ãŸã€‚
 : を指定ã™ã‚‹å ´åˆã¯ä¸Šè¨˜ã®ã‚ˆã†ã« argc ã‚’æ›´æ–°ã™ã‚‹ã®ãŒå®šçŸ³ã¨ãªã‚Š
ã¾ã™ã€‚(nil ã‚’èªã¿æ¨ã¦ã‚‹æ¡ä»¶ã¯ README.EXT* ã«è¨˜è¼‰ã—ã¾ã—ãŸ)
 ã‚る種 option hash ã¯ç‰¹åˆ¥ãªã®ã§å¦¥å½“ãªä»•æ§˜ã ã¨è€ƒãˆã¦ã„ã¾ã™ãŒã€
ã„ã‹ãŒã§ã—ょã†ã‹ã€‚ã„ãšã‚Œã¯ã€ã‚ーワード引数も &block åŒæ§˜ã®ç–‘ä¼¼
引数ã¨ãªã‚Šã€ open(path, **hash) ã®ã‚ˆã†ã«å±•é–‹ã•ã›ã‚‹å½¢ã«ãªã‚Œã°
ãã®è¾ºã¯ã™ã£ãã‚Šã™ã‚‹ã¨æ€ã„ã¾ã™ã€‚