瞎扯淡 看这这 ruby 代码,我眼睛难受

huobazi · 2013年03月22日 · 最后由 yfractal 回复于 2018年07月05日 · 3675 次阅读
class AppDelegate
  def application(application, didFinishLaunchingWithOptions:launchOptions)

    @window = UIWindow.alloc.initWithFrame(App.bounds)
    @window.makeKeyAndVisible

    @controller = ViewController.alloc.initWithNibName("ViewController", bundle:nil)
    @window.rootViewController = @controller

    true
  end
end

这和直接用 Objective-C 写真心木多大区别啊。

命名相同的话,就可以用 objc 的文档作参考了。多语言框架的通常做法

贴段跟 objc 不一样的

连续动画

UIView.animation_chain {
  view.slide(:left, 20)
}.and_then {
  view.slide(:up, 20)
}.and_then {
  view.slide(:right, 20)
}.and_then {
  view.slide(:down, 20)
}.and_then {
  view.fade_out
}.start

模型

class User
  PROPERTIES = [:id, :email, :password, :name,
                :birthday,  :sex, :location, :memo,
                :apps, :device_uuid, :authentication_token, :avatar]


  USER_KEY = "user"


  PROPERTIES.each do |prop|
    attr_accessor prop
  end


  def initialize(properties = {})
    properties.each do |key, value|
      if PROPERTIES.member? key.to_sym
        self.send("#{key}=", value)
      end
    end
  end


  def update_attributes(properties = {})
    properties.each do |key, value|
      if PROPERTIES.member? key.to_sym
        self.send("#{key}=", value)
      end
    end
  end


  def initWithCoder(decoder)
    self.init
    PROPERTIES.each do |prop|
      saved_value = decoder.decodeObjectForKey(prop.to_s)
      self.send("#{prop}=", saved_value)
    end
    self
  end


  def encodeWithCoder(encoder)
    PROPERTIES.each do |prop|
      encoder.encodeObject(self.send(prop), forKey: prop.to_s)
    end
  end


  def save
    defaults = NSUserDefaults.standardUserDefaults
    defaults[USER_KEY] = NSKeyedArchiver.archivedDataWithRootObject(self)
  end

end

这真还不如直接 Objective-C,至少查完文档再回来不需要脑子里把 Objective-C 翻译成 Ruby。 PS:这么长的名字不用 IDE 真是一种折磨,要操起 Xcode 的话还干嘛用 Ruby。

这就是传说中的 rubymotion 么?

曾经用过 macruby……好是受伤

匿名 #6 2013年03月25日

cocoa 和 objective-c xcode 是最佳拍档,二楼要实现模型,可以看看 Mantle. 不错 block 和 proc 比还是难用了一点点。

竟然还有方法名用驼峰的 看了就火大

卸载了。。。上 swift 吧。。。

RubyMotion 使用的关键就是。。。必须先通过 meta-programming 把这堆东西全部封装一遍,然后这世界就清净了。否则,真的辣眼睛。

Clojure 了解下。

下划线、中划线、驼峰。。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号