Ruby China

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

huobazi · 2013年03月22日 · 最后由 yfractal 回复于 2018年07月05日 · 3696 次阅读
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......好是受伤

匿名 #5 2013年03月25日

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

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

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

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

Clojure 了解下。

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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
请叫我靶子哥哥. :D

西安



共收到 10 条回复

AltStyle によって変換されたページ (->オリジナル) /