簡體   English   中英

如何在Ruby中干燥兩個函數?

[英]How to DRY up two functions in Ruby?

是否可以通過將兩個函數共享的三行移動到另一個函數來干燥這兩個Ruby函數?

def format_currency(number)
  number_to_currency(number, 
    :unit       => current_user.currency_unit, 
    :delimiter  => current_user.currency_delimiter, 
    :separator  => current_user.currency_separator, 
    :format     => current_user.currency_format
  )
end

def format_currency_for_pdf(number, invoice)    
  number_to_currency(number / invoice.exchange_rate, 
    :unit       => CURRENCIES[invoice.currency]
    :delimiter  => current_user.currency_delimiter, 
    :separator  => current_user.currency_separator, 
    :format     => current_user.currency_format
  )
end

謝謝你的幫助?

def format_currency(number)
  number_to_currency(number, 
    currency_hash(current_user.currency_unit) 
  )
end

def format_currency_for_pdf(number, invoice)    
  number_to_currency(number / invoice.exchange_rate, 
    currency_hash(CURRENCIES[invoice.currency])
  )
end

def currency_hash(unit)
  {
    :unit       => unit,
    :delimiter  => current_user.currency_delimiter, 
    :separator  => current_user.currency_separator, 
    :format     => current_user.currency_format
  }
end

正如芋頭所暗示的,它將是:

def format_currency(number)
  number_to_currency(number,
    currency_hash(current_user.currency_unit)
  )
end

def format_currency_for_pdf(number, invoice)
  number_to_currency(number / invoice.exchange_rate,
    currency_hash(CURRENCIES[invoice.currency])
  )
end

def currency_hash unit
  {
    :unit       => unit,
    :delimiter  => current_user.currency_delimiter,
    :separator  => current_user.currency_separator,
    :format     => current_user.currency_format
  }
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM