\
即将到来的MacRuby支持将Ruby运行时嵌入到基于Objective-C的应用当中并为其编写脚本。Matt Mower解释了为什么选择MacRuby而不是其他Objective-C脚本的原因,还介绍了在当前MacRuby主干中可用的API。Matt用到MacRuby的应用是Elysium,一个用于生成音乐的应用。
\几乎是从一开始,我就时常在想,Elysium应该是可脚本化的。一旦应用拥有了脚本能力以后,你就能对音乐策略有更强的控制能力。比如,可以用脚本控制鼓点的节奏,以达到控制音乐“力度”的目的。\
Matt继续讲到如何在一个Objective-C的应用中使用MacRuby,并展示了一些调用方法。例如,在一个Cocoa应用中执行Ruby源代码的方法是:
\\[[MacRuby sharedRuntime] evaluateString:rubySource]\\
Matt的示例也展示了一种简便的方法,在Objective-C应用中使用一小段Ruby代码来作为回调。
\ \关于对MacRuby 0.4的具体修改,可以参见MacRuby的GitHub镜像(代码库的提交页)。
\MacRuby和Objective-C深度集成,例如,很多基础Ruby类型都直接映射到了Objective-C类型之上。因此,MacRuby有着和JRuby以及IronRuby相近的优势,例如,简便快捷的访问大量的现存程序库(比如OS X所带的程序库)。Apple已经使用Ruby(尽管不是MacRuby)来实现iPhone商业实用工具集。
\你开发Objective-C应用吗?如果是的话,你会选择MacRuby,还是选择Matt Mower列出的其他的脚本呢(Nu、JSCore、…)?
\ \