我正在使用Rubymotion构建iOS应用程序。 我需要将一段Objective-c代码“转换”为Ruby。 这是对的吗?
最初位于Objective-c
[movieWriter setCompletionBlock:^{
[filter removeTarget:movieWriter];
[movieWriter finishRecording];
}];
Ruby中的相同内容?:
movieWriter(setCompletionBlock:-> { filter.removeTarget(movieWriter) }, { movieWriter.finishRecording })
答案 0 :(得分:7)
没有。 Ruby中的消息发送语法不是object(message:arguments)
,并且块中具有多个语句的语法不是{statement1} {statement2}
。相反,你想要这样的东西:
movieWriter.completionBlock = lambda do
filter.removeTarget(movieWriter)
movieWriter.finishRecording
end
(RubyMotion将completionBlock=
之类的setter转换为适当的setCompletionBlock:
方法。如果你想使用显式setter方法,它看起来像movieWriter.setCompletionBlock(lambda do …)
。)