mojavy.com

objective-cのカテゴリついてのメモ

July 13, 2012 at 06:30 PM | categories: objective-c |

objective-c

  • objective-cではカテゴリという機能を使ってクラスの拡張ができる。
  • javascriptのprototypeのようなもの。
  • 一旦上書きしたメソッドにアクセスする方法はない。メソッドを上書きする必要がある場合はサブクラスとして実装するべき。
  • プライベートメソッドは無名カテゴリを使って実装できる。
  • 別の名前のカテゴリでもメソッド名は一意にしなければならない。
  • 別のカテゴリとの間にメソッド名でコンフリクトが発生した場合、どちらが呼ばれるかは未定義。
  • カテゴリ名自体にソースコード上での可読性以上の実質的な意味は無いらしい。

@interface NSObject (MyExt)
-(void) doit: (NSString *) arg;
@end

@implementation NSObject (MyExt)
-(void) doit: (NSString *) arg
{
   // do something
}
@end

参考




Xcodeのキーバインディングをもっとemacsっぽくする

July 12, 2012 at 12:30 PM | categories: xcode, mac |

xcode

xcodeのキーバインディングはデフォルトでemacsっぽいものが使えますが、普段emacsを使ってる身としては中途半端すぎて逆にいらつきます。

C-xC-sで変な文字が入ったり、escで補完リストのポップアップをトグル表示とかやめてほしかったので、 このあたりのうざい動きを抑えつつ最低限の設定を追加した設定をつくりました。

これを$HOME/Library/Developer/Xcode/UserData/KeyBindings あたりに保存すれば、 xcodeのkey bindingsの設定に読ませることができると思います。

もっと良い設定があれば教えてほしいです。



rubyのワンライナーで便利な変数まとめ

July 08, 2012 at 06:30 PM | categories: ruby |

ruby

$.

現在の行番号を表します。awkでいうNRと同じです。

ruby -ne 'puts "#{$.},#{$_}"'

$-i

この値を文字列で上書きするとin-place置換を行うようになります。オリジナルのファイルはここで指定した文字が拡張子についたファイルとして保存されます。オリジナルファイルが不要なら空文字を設定すればOKです。

ruby -ne 'BEGIN{$-i=".old"}; puts($_) if /foo/' path/to/file

$/

入力の区切り文字を表わす文字です。デフォルトは改行です。

ruby -ne 'BEGIN{$/=","}; p $_'

$, 、$;

$, はjoinのデフォルト区切り文字で、$; はsplitのデフォルト区切り文字です。 ワンライナーではjoinとsplitをよく使うと思うので、BEGINで上書きしておけばワンライナーを多少短く書けます。

ruby -ne 'BEGIN{$,="\t";$;=","}; puts $_.split.join'

まとめ

まだ他にも知らないテクニックがたくさんありそうですが、新しく見つけたら追記していきます。

参考



sbclでクラスのスロット一覧を取得する方法

July 06, 2012 at 06:30 PM | categories: memo, sbcl, common lisp |

lisp

メモメモ

CL-USER> (sb-mop:class-slots (find-class 'sb-posix:stat))
(#<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-POSIX::MODE>
 #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-POSIX::INO>
 #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-POSIX::DEV>
 #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-POSIX::NLINK>
 #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-POSIX::UID>
 #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-POSIX::GID>
 #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-POSIX::SIZE>
 #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-POSIX::ATIME>
 #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-POSIX::MTIME>
 #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-POSIX::CTIME>)


About Me

pic
mojavy

Recent posts






Categories



Badges