metaprogramming

    1熱度

    3回答

    我想知道的是,是否存在某種與我在Groovy中看到的類似的內容,如ExpandoMetaClasses。我一直在閱讀Open Classes,但我不太清楚Ruby允許修改類的範圍。 借鑑的例子從博客上面,在Groovy中,我可以修改Java的String類,並添加一個方法給它,像這樣: String.metaClass.shout = {-> return delegate.toUppe

    2熱度

    3回答

    假設我希望某個字符串的實例與其他「正常」實例的行爲不同,例如取消「upcase」方法的效果。我做到以下幾點: class String def foo def self.upcase self end self end end 這似乎很好地工作,而我需要的方式: puts "bar".upcase #=> "BAR" puts

    82熱度

    2回答

    一般來說,如何獲得對名稱爲字符串的對象的引用? 更具體地說,我有一個參數名稱列表(成員變量 - 動態構建,所以我不能直接引用它們)。 每個參數是一個也有from_s方法的對象。 我想要做類似如下(這當然是不行的...): define_method(:from_s) do | arg | @ordered_parameter_names.each do | param | i

    1熱度

    1回答

    我有以下兩個項目在Flex Builder 3: 一個AS3庫項目(生成SWC文件) 一個Flex應用程序項目(MXML應用) MXML應用程序引用AS3庫項目(Flex構建路徑)。到現在爲止還挺好。我現在想在應用程序使用AS3庫時自動運行代碼。 [mixin]標籤應該完全符合我的需求。 我按照http://nondocs.blogspot.com/2007/04/metadatamixin.ht

    1熱度

    1回答

    考慮下面的代碼: def create_class(class_name, superclass, &block) klass = Class.new superclass, &block Object.const_set class_name, klass end 後,我做的事: create_class('User', ActiveRecord::Base) 以下

    4熱度

    4回答

    我在讀這頁: C++ Tip: How To Get Array Length。作者介紹了一段代碼來了解靜態數組的大小。 template<typename T, int size> int GetArrLength(T(&)[size]){return size;} // what does '(&)' mean ? . . . int arr[17]; int arrSize =

    4熱度

    6回答

    class Device def initialize(device_id, data_resource) @id = device_id @data_resource = data_resource end def display_device mode = @data_resource.get_display_device_mode

    0熱度

    2回答

    我正在製作一個框架,根據預定義的XML文件創建對象。 例如,如果在XML文件中會出現以下情況: <type name="man"> <property name="name" type="string"> <property name="height" type="int"> <property name="age" type="int"> <propert

    0熱度

    3回答

    在Grails應用程序中,我想爲所有控制器類添加foo()方法。我知道我可以使用類似的代碼做一個插件的doWithDynamicMethods閉包: application.controllerClasses.toList()*.metaClass*.foo = { println 'foo called' } 不過,我不希望創建一個插件只是爲了這個目的。有沒有其他地方我可以做到這一點。我懷疑

    2熱度

    2回答

    在Grails應用程序中,我正在尋找一些方法將數據從控制器操作傳遞到操作後運行的過濾器。我喜歡思考的東西: class MyController { def myAction = { render(view:"myView", model:[key: "value"]) passData { // Do some processing here