如何将Objective-c块转换为Ruby?

时间:2013-12-04 22:47:52

标签: objective-c rubymotion

我正在使用Rubymotion构建iOS应用程序。 我需要将一段Objective-c代码“转换”为Ruby。 这是对的吗?

最初位于Objective-c

[movieWriter setCompletionBlock:^{
          [filter removeTarget:movieWriter];
          [movieWriter finishRecording];
      }];

Ruby中的相同内容?:

  movieWriter(setCompletionBlock:-> { filter.removeTarget(movieWriter) }, { movieWriter.finishRecording })

1 个答案:

答案 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 …)。)