2013-01-02 38 views
0

我有了一些內在價值的一類:建立對象的方法更有效率?

private variable layer_type 
private variable color 
private variable name 
private variable thickness 
private variable conductivity 
private variable permittivity 
private variable loss_tangent 

我想與用戶給出的構造函數值來啓動他們,但因爲有7人,以減少混亂和代碼大小我做到了在一個循環:

constructor {in_layer_type in_color in_conductivity in_loss_tangent in_name in_permittivity in_thikness f_row frame} { 
    foreach var [list layer_type color conductivity loss_tangent name permittivity thikness] { 
     set $var [set in_$var] 
    } 

有什麼不同(性能明智)這種方法,在編寫所有set命令?

set layer_type $in_layer_type 
set color $in_color 
#... 
set thickness $in_thickness 
+0

您希望節省多少微秒?你真正的問題應該是:哪一個更容易閱讀和維護? –

+0

「承包商」,你的意思是'構造函數'?而咔嗒=混亂? –

+0

@glennjackman,我意識到,因爲它只有7個,所以差異會很小,但我仍然對答案感興趣,以瞭解什麼是更有效的做法。我有其他代碼片段,我在更長的循環內做類似的事情。 – SIMEL

回答

0

嚴格地講,要全面寫出來是最有效的方法。我建議你不要這樣做!問題是,這是難以維持,難以用相反,嘗試這樣的事情(我不知道你怎麼想,但我不喜歡有很多的強制性位置參數在所有語言的來電!):

constructor {f_row frame args} { 
    foreach {var value} $args { 
     if {[string match -* $var]} { 
      set [string range $var 1 end] $value 
     } 
    } 
    # ... 
} 

是的,你需要寫的東西有點不同來使用:

TheClass theObjToMake $theFRow $theFrame -layer_type 12345 ... 

你也建議使用ITCL設施設置默認值,如果你這樣做。挑選合理的東西,它會突然顯得非常自然