2015-11-11 2 views
1

у вас есть предложения по этому поводу if состояние короче (более элегантно) как-то?Обзоры для рубинов «если»

if (@path.start_with? "scp" || @path.start_with? "http") 
    @source = "url" 
else 
    @source = "local" 
end 

Что делать, если у меня есть несколько больше префикса, чтобы проверить (скажем ftp1, ftp2 и ftp3)?

+0

Что вы хотите получить от этого нового префикса? – engineersmnky

+0

Для обзоров кода есть еще один сайт: http://codereview.stackexchange.com – Meier

+0

@Meier спасибо, я никогда не видел этот сайт раньше! Потрясающие :) – valadzko

ответ

5

может принимать несколько строк в качестве аргумента

@source = @path.start_with?("scp", "http") ? "url" : "local" 
0

Это может имеет смысл извлекать префиксы в массив первых, когда список становится больше:

URL_PREFIXES = %w[ scp http ] 

я могу думать о Serveral способов использование это URL_PREFIXES постоянный. Например, я часто предпочитаю if...else блоки по одной гильзе причин читаемости:

if URL_PREFIXES.any? { |p| @path.start_with?(p) } 
    @source = 'url' 
else 
    @source = 'local' 
end 

Или это:

@source = 'local' 
@source = 'url' if URL_PREFIXES.any? { |p| @path.start_with?(p) } 

Или определить префикс первого:

prefix = @path.split(':').first 
@source = URL_PREFIXES.include?(prefix) ? 'url' : 'local' 

Если вы работаете с Rails вы можете написать это вместо этого:

prefix = @path.split(':').first 
@source = prefix.in?(URL_PREFIXES) ? 'url' : 'local' 
Смежные вопросы