В Ruby пустая строка ""
является правдивой относительно условных обозначений. И я вижу, что многие люди борются с этим фактом. Ruby on Rails blank?
- одна из попыток решить эту проблему. С другой стороны, это не сразу становится очевидным, когда такая спецификация становится удобной. Существует ли какой-либо прецедент, когда этот факт становится удобным, или будет теоретическая проблема, если бы это было иначе?Что хорошего, если пустая строка правдивая?
ответ
Я думаю, что придумал ответ. Наверное, это теоретическая причина и эффективность. Рисование линии между разными экземплярами одного класса теоретически сложнее, чем рисование линии между классами, и для этого потребуется больше вычислений. Если ""
были falesy, тогда внутренняя Ruby должна была бы проверять длину строки каждый раз, когда в состоянии есть строка. Вместо этого, если истинность можно судить только классом, что случается так, то это будет намного более эффективно. Возможно, это также причина, по которой false
и true
не подпадают под один класс Boolean
, но принадлежат к независимым классам соответственно.
Другая возможность состоит в том, что есть только один экземпляры false
и nil
, поэтому имеет дела с этим внутренне в Ruby, потребуется только проверить указатель/идентификатор объекта, а строки изменчивы, и требуют больше сложности, чтобы проверить пустоту ,
Уменьшение количества вещей, которые считаются falsey - это хорошо. Это упрощает язык, упрощает логические правила, упрощает запоминание и применение и тем самым уменьшает количество ошибок.
Просто смотреть на беспорядок PHP в: false
, 0
, 0.0
, '0'
, ''
, null
и array()
все falsey, который продолжает удивлять многих людей каждый день.
Если вы хотите протестировать пустую строку, проверьте пустую строку. Вы должны знать, содержит ли ваша переменная строку или логическое значение и может быть соответствующим образом протестирована.
Ваша точка зрения, что чем меньше, тем лучше, имеет смысл, но все еще звучит немного слабо. Можете ли вы рассказать о том, что делает его удивительным в PHP? – sawa
Ну, особенно ' '0'' (0 как строка) является довольно спорным. Это не * пустая строка, но она считается «ложной». Это кажется довольно произвольным. Тогда почему бы не «ложь» (строка «false»)? Потому что это * непустая строка *. Таким образом, правило - это * непустые строки, кроме '' 0'', являются ложными *. Это намного сложнее объяснить и сохранить для newbs, чем 'false', а' nil' - 'false', period. В PHP вы должны действительно думать о таких вещах, как * может ли эта функция, возможно, возвращать пустой массив и действительно ли я хочу, чтобы это означало «false»? * Или * может вводиться здесь «0», и если это будет «false» '? * – deceze
Но дело здесь не в' 'false'' или' '0''. Речь идет о '' ''. – sawa
Я думаю, что Ruby был прост, и значения FEWER, которые являются ложными, упрощают прояснение программ: «Только два объекта имеют логическое значение false, это сам объект false и объект nil».
Компромисс в том, что вам, возможно, придется написать .blank?
. С другой стороны, сколько полей имеет минимальную длину? Не много. Если вы все равно проверяете .size > 1
, то «пустая строка, являющаяся правдивой», не полезна.
Каждый язык выбирает «парадигму». Например, в SQL логические операции фактически имеют 3 значения (true, false, null). В Perl и C значение 0
неверно. Heck, на некоторых языках строка «false» неверна.
Ваш ответ слишком абстрактный. Если меньше, тем лучше, то почему существует не только один, но два фальшивых элемента? Почему два нормально, а не три? – sawa
- 1. пустая строка, если нулевой
- 2. Если оператор запуск, если пустая строка
- 3. Что пустая строка в Баше
- 4. Строка пустая или пустая
- 5. Использовать значение DEFAULT, если пустая строка
- 6. Отправить форму, если db строка пустая
- 7. Возвращает True, если элемент пустая строка
- 8. если строка пустая не работает mysql
- 9. instance_variable_get возвращает ноль, если это пустая строка
- 10. Минус, если строка не пустая условная логика
- 11. проверка Htaccess если пустая строка запрос
- 12. ModelState.IsValid верно, если пароль пустая строка
- 13. если результат XPath пуст возвращение «пустая» строка
- 14. ASP.NET Entity Framework, если пустая строка - содержит
- 15. Sub-строка пустая строка вызывает ошибку в случае, если пункт
- 16. Проверьте, если строка ноль, ноль, пустая строка, пустой
- 17. Пустая строка перед загрузкой
- 18. Пустая строка Sql Обновление
- 19. regex разряд пустая строка
- 20. Как grep пустая строка?
- 21. JSON пустая строка обнулить
- 22. Newtonsoft.Json десериализации Пустая строка
- 23. linq как пустая строка
- 24. проверка PHP пустая строка
- 25. Большая строка для хорошего массива
- 26. Пустая строка в Excel
- 27. Thread.CurrentPrincipal возвращающая пустая строка
- 28. JSON пустая строка
- 29. Unintuitive пустая форматированная строка
- 30. Пустая строка сериализации
Есть ли какой-либо прецедент, когда обработка '' '' 'как фальшивки становится удобной? Я считаю это гораздо более удивительным. – meagar
Любое место, где люди рассматривали бы использование 'blank?', Было бы прецедентом. Много. – sawa
Я думаю, что этот вопрос слишком широк, чтобы получить разумный ответ. Вы спрашиваете, почему было принято решение о создании языка. Я могу предоставить вам действительный прецедент, где это станет удобным, а также тем, где это не так. – Shoe