先日<http://ashplanning.blogspot.com/2010/06/google.html>のコメントの中でちゃらんさんに
RubyCocoa 入門を教えていただきました。
こちらを経由し
Programming - RubyCocoa wiki
ここを読みながら遊んでみました。
# サンプル通りに警告音を鳴らす。
% irb
>> require 'osx/cocoa'
=> true
>> names = Dir['/System/Library/Sounds/*.aiff'].grep(/([^\/]+)\.aiff/){ |i| $1 }
=> ["Basso", "Blow", "Bottle", "Frog", "Funk", "Glass", "Hero", "Morse", "Ping", "Pop", "Purr", "Sosumi", "Submarine", "Tink"]
>> OSX::NSSound.soundNamed(names[0]).play
=> true
# OSX::NSSound のpublic メソッドをみてみた。
>> OSX::NSSound.methods
=> ["objc_class_method", "_ns_enable_override?", "kvc_wrapper_writer", "objc_instance_method_type",
... 略
# OSX::NSSound を管理している OSX モジュールのメソッドをみてみた。
# ものすごい量に驚いてしまった!
>> OSX::methods
=> ["CFRelease", "CGColorSpaceRelease", "CGRectIntersectsRect", "frozen?", "CFNumberGetTypeID", "CGAffineTransformConcat", "launch_data_dict_lookup", "CGPaletteCreateWithByteSamples", "CGPDFDocumentAllowsCopying", "CFLocaleCreateCanonicalLocaleIdentifierFromScriptManagerCodes", "to_a"
... 略
# サンプルにあるテキストクラスの生成
>> str = OSX::NSString.stringWithString 'hello'
=> #<NSCFString "hello">
# 'hello'.methods と同じことをしたつもり
>> str.methods
=> ["upcase!", "to_f", "to_yaml", "lines", "sub", "methods", "send", "replace", "empty?", "squeeze", "crypt", "chr", "gsub!",
... 略
# RubyのString と同じように扱えるようだ。
>> str.upcase
=> #<NSCFString "HELLO">
>> str.reverse
=> #<NSCFString "olleh">
# class String は OSX::NSCFString
>> str.class
=> OSX::NSCFString
>> str.object_id
=> 216018122
# OSX::NSCFString を str2 に代入
# さっきの str は OSX::NSString.stringWithString だった。
>> str2 = OSX::NSString
=> OSX::NSString
# メソッドの表示
>> str2.methods
=> ["objc_class_method", "_ns_enable_override?", "kvc_wrapper_writer", "objc_instance_method_type",
... 略
# send でstringWithStringを設定してみる
>> str2.send(:stringWithString, "hi")
=> #<NSCFString "hi">
# ちょっと感動!
# OSX::NSCFString のクラスは?
>> str2.class
=> Class
あ? Class なんだ。
% irb
>> str = String
=> String
>> str.class
=> Class
これと同等てことかな。
+++ memo +++
% sw_vers
ProductName: Mac OS X
ProductVersion: 10.6.4
BuildVersion: 10F569
% ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
0 件のコメント:
コメントを投稿