万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    Boo Language Advent Calendar 2012 25日目 Title:「booishをインストール」

    URL: http://atnd.org/events/34622

    今日はクリスマス 兼 Advent Calendar最終日。しかし多忙なのであまり濃い情報は載せられないかも?

    Booにはインタラクティブインタプリタとしてbooishがあります。
    BOO - Interactive Interpreter
    このサイトを見たが、特にインストールをMacOS Xにする方法なさそう。
    srcにどうたらこうたら言ってますが、
    一度ここからダウンロードしてみたがよくわからない
    URL: http://dist.codehaus.org/boo/distributions/?C=M;O=D

    SharpDevelopを使うような気がするのでWindowsではないので却下。


    githubをみた。
    https://github.com/ceykooo/homebrew-boo

    「How do I install these formulae?
    Just brew tap ceykooo/homebrew-boo and then brew install .」
    の意味がわからなかった。

    公式のインストール方法?

    brew install https://raw.github.com/ceykooo/homebrew-boo/master/<formula>.rb

    これの意味がわからんかったが、をbooに置き換えた

    つまり、コレをした。

    brew tap ceykooo/homebrew-boo
    https://raw.github.com/ceykooo/homebrew-boo/master/boo.rb

    コンパイルにやけに時間が掛かる。
    10分くらい待ったかも?

    zshに怒られたが、booコマンドで実行できた

    > boo
    zsh: correct 'boo' to 'booi' [nyae]? n
    boo command line utility 0.9.4.9
    
    Cannot load history from '/Users/sugita/.local/share/booish_history'
    The following builtin functions are available :
        /? or /h or /help : display this help
        dir(type) : returns the members of a type
        describe(type) : describe a type as boo code
        globals() or /g : returns names of all variables known to interpreter
        load(file) or /l file : evals an external boo file
        save(file) or /s file : writes your current booish session into file
        quit() or /q : exits the interpreter
    >>>def doit(p):
    ...    print p.ToUpper()
    ...    
    >>>doit("a string")
    A STRING

    おまけ

    最近、いまさらですがリーダブルコード↑を読むときに思い出しました。
    Pythonでは関数を呼ぶときに引数に任意の引数名を入れて渡すことによって、
    呼びだすことができる。
    これのお陰でどの引数が何番目かを忘れてても呼びだすことができるのだ!

    ・arg_test.py

    def Hoge(arg0, arg1):
        print (arg0)
        print (arg1)
    
    Hoge(arg1=1, arg0=0)

    ↓結果

    0
    1

    このようにarg1が先に来てても結果が正しい。


    じゃあこの機能はBooにもあるかドキュメント探すより実行したほうが速いのでやってみた。
    ・ArgTest.boo

    import UnityEngine
    
    
    class ArgTest (MonoBehaviour):
    
        def Start():
            Hoge(arg1=1, arg0=0)
    
        def Hoge(arg0 as int, arg1 as int):
            Debug.Log(arg0)
            Debug.Log(arg1)
    

    ↓結果

    1
    0

    って・・・・。これはエラーこそならんかったけど、
    単に「arg=1」と代入して渡しているだけだった。
    やっぱりBooはデフォルト引数がないし、Pythonのいいところをすべて
    受け継いでいない。