Im рубин начинающих и очень разочарованы с этим кодом:рубин два сравнения в исключением случаев, когда
unless ((f[-4..-5] == '.png') || (f[-4..-5] == '.jpg'))
Как-то второе сравнение не распознается рубин! Что не так?
Im рубин начинающих и очень разочарованы с этим кодом:рубин два сравнения в исключением случаев, когда
unless ((f[-4..-5] == '.png') || (f[-4..-5] == '.jpg'))
Как-то второе сравнение не распознается рубин! Что не так?
Я думаю, вы должны использовать f[-4..-1]
вместо f[-4..-5]
.
Или вы можете использовать регулярные выражения:
unless f =~ /\.(png|jpg)$/
или использовать String#end_with?:
unless f.end_with?('.png', '.jpg')
@squiguy, Спасибо за комментарий. Я это исправил. – falsetru
'если f [/ \. (?: jpe? | Pn) g $ /]'. Некоторые приложения создают файлы 'jpeg', и многие из них существуют в дикой природе. «jpg» - это расширение, которое я вижу с помощью «современных» приложений. –
f[-4..-5]
будет пустой строкой, которая никогда не будет соответствовать '.png'
. Таким образом, второй член вашей дизъюнкции никогда не будет оценен.
Если вы кондиционирование расширения файла, то вы можете сделать это:
case File.extname(f)
when ".png", ".jpg"
else
...
end
О, мужчина! Мой мозг в праздниках спасибо! –
Как показано ниже:
ext_nm = File.extname(f)
unless [".png", ".jpg"].include? ext_nm
Вы должны назначить 'File.extname (f)' переменной, иначе каждая итерация по массиву заставит перераспределить расширение. Это пустая трата времени процессора. –
@theTinMan ваш канал всегда приветствуется для меня ... как я здесь, чтобы узнать ..так, я обновил код ...: D –
что вы имеете в виду под "не распознан"? и что вы ожидаете от кода? –
Не работает! Извините –
Что вы пытаетесь сделать? f [-4 ..- 5] всегда будет пустой строкой/массивом (в зависимости от того, с чего начинался f) –