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

Jon*_*ark 1 objective-c rubymotion

我正在使用Rubymotion构建一个iOS应用程序.我需要将一段Objective-c代码"转换"为Ruby.它是否正确?

最初是在Objective-c

[movieWriter setCompletionBlock:^{
          [filter removeTarget:movieWriter];
          [movieWriter finishRecording];
      }];
Run Code Online (Sandbox Code Playgroud)

Ruby中的相同内容?:

  movieWriter(setCompletionBlock:-> { filter.removeTarget(movieWriter) }, { movieWriter.finishRecording })
Run Code Online (Sandbox Code Playgroud)

Chu*_*uck 7

不.Ruby中的消息发送语法不是,object(message:arguments)并且块中有多个语句的语法不是{statement1} {statement2}.相反,你想要这样的东西:

movieWriter.completionBlock = lambda do
  filter.removeTarget(movieWriter)
  movieWriter.finishRecording
end
Run Code Online (Sandbox Code Playgroud)

(RubyMotion将setter completionBlock=转换为适当的setCompletionBlock:方法.如果你想使用显式setter方法,它看起来就像movieWriter.setCompletionBlock(lambda do …).)