我需要一個我稱之爲shake_tree
的操作。我已經使用遞歸算法來實現它,只使用基本的紅寶石的Fortran(引用舊報價「你可以在寫的Fortran代碼的任何語言。」),但我嫌疑有一個更簡潔和慣用的紅寶石方式。如何實現樹形搖動器操作?
因爲我不知道這個操作的通用名稱,所以讓我簡單描述一下。我有這樣的例子哈希散列:
{
"-cutoff:" =>
{
:flag => {:set_ie1 => [:useCutoff, true]},
:arg => {:vector_ie1 => :double}
},
"-depth:" =>
{
:flag => {:set_ie2 => [:useInconsistent, true]},
:arg => :double,
:default => 2.0
},
"-maxclust:" =>
{
:flag => {:set_ie3 => [:useCutoff, false]},
:arg => {:vector_ie2 => :index}
},
:fn => "arrayTypeOptions"
}
有嵌入的樹結構中像:vector_ie1
和:set_ie3
獨特的符號。我需要刪除除了從根部到符號之間的路徑以外的樹的所有分支。鑑於上面的例子:
shake_tree(specs, :vector_ie1)
將返回:
{
"-cutoff:" =>
{
:flag => {:set_ie1 => [:useCutoff, true]},
:arg => {:vector_ie1 => :double}
}
}
和
shake_tree(specs, :set_ie2)
將返回:
{
"-depth:" =>
{
:flag => {:set_ie2 => [:useInconsistent, true]},
:arg => :double,
:default => 2.0
}
}
如何將一個更有經驗的紅寶石編碼器的方法是什麼?
爲什麼不使用像[RubyTree](http://rubytree.rubyforge.org/rdoc/index.html)這樣的樹庫?它有一個'parentage'方法,會給你這個。 – 2013-04-26 01:55:45
@MarkThomas:感謝您的鏈接,但一目瞭然看起來像是過度殺傷。 ** ruby ** DSL的全部想法是讓** ruby **完成大部分工作......現在,我的DSL的「解析器」包含在「源」字符串上調用「vMATCodeMonkey#instance_eval」! :-) – 2013-04-26 02:32:30