[Ruby] Rubyお勉強2
- irb の拡張 utility_belt 続き
- メソッドの名前
collect と map は同じ機能らしい。。
なんで一つの機能に幾つも機能があるんだ。
このへんは思想をちゃんと理解したほうがよさそう。
- Array#inject について
ブロック内の繰り返し処理に対して、状態を保持できるような動き
ブロック内で変数を扱えるので影響も少なく便利?
# aの変数は値をブロック内で継続して保持する # bの変数はリストから繰り返し渡ってくる # a = 1 で初期化 # b = 2, 3, 4 の順で繰り返し x = [1, 2, 3, 4].inject {|a, b| a + b} p x # 初期値を別にしたい # a = 10 で初期化 # b = 1, 2, 3, 4 の順で繰り返し y = [1, 2, 3, 4].inject(10) {|a, b| a + b} p y
- シンボルについて
初回に一回だけ生成される文字列
文字列の比較処理のコストが落ちる
動的に生成できるし、これはいろいろ使えそう。
-
- 静的な生成方法
%s|shinbolname| :shinbolname
-
- 静的な生成方法
douteki = "doutekinamoji" douteki.intern
-
- symbol の使い道
test = "hello" methodName = :split if test.respond_to? methodName puts "true" end
- alias
なんで同じ機能で違う名前があるのか不思議でしらべているうちに alias という機能を学習
これで、同じ関数をエイリアスかけて使用できる。
また、関数の機能が変更になったときでもこんなことができるみたい
#過去の処理内容 def hoge puts "hello" end #過去の関数にoldをつける alias old_hoge hoge #新しい処理に書き換え def hoge puts "new hoge" old_hoge puts "new hoge" end hoge old_hoge
Rubyのお勉強
Rubyなんか面白そうなので、ちゃんと勉強。
ということで、Rubyのお勉強で気になったところをメモがわりに記録
- 変数
! 変数名の頭文字が大文字なら定数になるらしい
@@klassname : クラス変数
@instance_var : インスタンス変数
- 組み込み系
http://www.ruby-lang.org/ja/old-man/html/_C1C8A4DFB9FEA4DFCAD1BFF4.html
ここが大変参考になりました。
こまったらみたりいな。
- 多重代入
hoge, fuga = "atai1", "atai2"
おもしろいやつ
.. : 範囲演算子(境界含む)
... : 範囲演算子(境界除外)
* 0 以上 最長一致
*? 0 以上 最短一致
+ 0 以上 最長一致
+? 0 以上 最短一致
- IF文とか書き方(忘れやすいのでメモ
if a > b p "a ha okkii" end if b > c p "b ha okkii" elsif c < d p "c ha chissai" end
- case文とか書き方(忘れやすいのでメモ
便利かも。
a = 10 case a when 1..10 puts "1-10 no aida" when 11..20 puts "11-20 no aida" else puts "other" end
どうやらcaseを評価するにはオブジェクトに === 演算子の定義が必要っぽい
これは、勉強しとこう。
- 繰り返しとか書き方(忘れやすいのでメモ
x = 1 while x < 10 p x x += 1 end
- クロージャとか使うとおもしろい動きできそう。
-
- クロージャ例
def test_closure c = 0 f = lambda {|n| c += n } return f end t = test_closure t.call(2) t.call(3) t.call(4) t.call(1)
- irb 拡張
irb の拡張は wirble か utilty belt を使う
utilty belt はwirbleの拡張らしい
gem install utility_belt gem install wirble
よいカラースキームを知った
いつもターミナルやエディタのカラースキームに困るのだけど、アプリ間では統一するのはめんどくさくてできなかった。
たまたまvimで見かけたカラースキームを読むといろんなアプリで使用できるように設定がまとめられている!!
これはいいなぁ。
Vim, Emacs, IntelliJ IDEA, NetBeans ... etc
OSX, Putty
など対応アプリがいっぱい。
今度からこれにしよう。
設定は以下.
vimの場合
.vimrc
Bundle 'altercation/vim-colors-solarized' syntax enable set background=dark colorscheme solarized
OS X のターミナルの場合
1. ダウンロード
http://ethanschoonover.com/solarized
2. osx-terminal.app-colors-solarized フォルダを開く
3. olarized Dark ansi.terminal をダブルクリック
あとはデフォルトに指定
EverNoteをvimで書き込む
普段あまりEvernoteは使わないのだが、勉強会などに行った時などはメモをMacのローカルにとると共有がめんどくさいので、Evernoteを今後は使おうと思う。
vimのプラグインにEvernoteないかなと思っていると良さそうなプラグインがでてきました。
アカウントの設定など、あまり検索に引っかからなかったので備忘録。
.vimrc に Vundle 登録
.vimrc で Evernoteのアカウントを設定
以下を設定
Bundle 'kakkyz81/evervim' let g:evervim_username = 'Account' let g:evervim_password = '*****' let g:evervim_workdir = '~/.evervim'
:EvervimCreateNote でメモ開始
追記
どうもEvervimSetupを実行するとg:evervim_workdir配下にAccount.txtが作成されるみたい。
グローバル変数とどっちがいいかな...
macports で Vim インストール
macports の vim をデフォルトでインストールするとpythonやrubyで作成されているプラグインが動作しない。
port install の時にコンパイルオプションを与えることでpython,rubyのインターフェースを追加することができる。
以下、手順。
% port variants vim % sudo port install vim +big +python27 +ruby
オプション +big は何か?
コンパイルオプションのセット。tiny, small, normal, big, huge と用意されている。
macports では、tiny,normal,bigが選択できるらしい。
どんなセットなのか知りたい場合は以下のリンクが参考になる。
ujihisa.vim#2 の参加記録
概要
- プログラム
http://vim-jp.org/ujihisa.vim-2/
- 内容
https://gist.github.com/1379903
また、近日中(2011/11/23現在)に http://vim-users.jp リンクされるそうです。
せっかく参加させていただいたので、感想を残します。
2.vim-users.jp はこれから成長していく
VimのプラグインによりVimは今でも十分多機能。
しかし、いずれVim本体のメンテナンスに限界を迎えることが危惧されています。
来るべき新生Vimと拡張機能の開発・運用の準備のためにvim-users.jpはコミュニティ強化をすすめていくというのが今後のVimの流れかなと思いました
。
3.プラグインがすごい
Vim script だけでいろいろできる。自分もこれからもっと使いこなしたいなぁ。やはり「Vimテクニックバイブル」欲しいなぁ。
Vimテクニックバイブル ?作業効率をカイゼンする150の技
- 作者: Vimサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2011/09/23
- メディア: 単行本(ソフトカバー)
- 購入: 18人 クリック: 641回
- この商品を含むブログ (37件) を見る
とりあえず知らなかったプラグインや機能はいれとこう。
1.相対行番号表示
2.Unite.vimのプラグイン各種(unite-outlineよさげ!)
3.vim-pep8
非常に有意義な時間でした。
参加者の方ともお話ができて、また一つ勉強になりました。
やりたいことを列挙する
何度かやりたいことを書いたけど、どれも実現できていない。。。
でも、あっ、やりたいなぁと思ったことを書いてどれが一番やりたいのか考えるための種にしよう。