From: eregontp@gmail.com
To: ruby-core@ruby-lang.org
Subject: [ruby-core:103175] [Ruby master Feature#17773] Alias `Numeric#zero?` and `Float#zero?` as `Numeric#empty?` and `Float#empty?`
Date: Fri, 02 Apr 2021 10:09:12 +0000 (UTC) [thread overview]
Message-ID: <redmine.journal-91250.20210402100912.2963@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-17773.20210402034945.2963@ruby-lang.org
Issue #17773 has been updated by Eregon (Benoit Daloze).
Same feeling here, empty? should be reserved for collections with elements.
Input fields from a website are always Strings initially, and should be checked as Strings (e.g., input.strip.empty?) for provided/not-provided.
The user might have provided "0" and that might be a correct value.
----------------------------------------
Feature #17773: Alias `Numeric#zero?` and `Float#zero?` as `Numeric#empty?` and `Float#empty?`
https://bugs.ruby-lang.org/issues/17773#change-91250
* Author: sawa (Tsuyoshi Sawada)
* Status: Open
* Priority: Normal
----------------------------------------
When dealing with user input fields as in web applications, there are typical values that we want to consider as the default and/or absence of user input. For string/text inputs, list items, and attributes, we have `String#empty?`, `Array#empty?`, and `Hash#empty?` respectively, which seem to correspond to those cases. As for numerics, there are `Numeric#zero?` and `Float#zero?`.
However, there is no single term that covers all these cases. In a routine to check through the fields whether there is user input, we have to selectively use `empty?` or `zero?` depending on the type of the input field.
Many programming languages other than Ruby typically consider these values as falsy with respect to logical calculation. Ruby handles only `nil` and `false` as falsy, and that has clear advantages in many aspects, but with the cost of losing a simple way to handle these default values.
I propose to alias `Numeric#zero?` as `Numeric#empty?` and `Float#zero?` as `Float#empty?` so that we can simply use `empty?`. At first, calling zero as empty might sound strange, but at least for non-negative integers, set theoretic definitions usually define zero as the empty set, so it is not that strange after all.
Ruby on Rails' `blank?` is conceptually similar to this, but `0.blank?` returns `false`, so it is a different concept.
--
https://bugs.ruby-lang.org/
next prev parent reply other threads:[~2021-04-02 10:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-02 3:49 [ruby-core:103162] [Ruby master Feature#17773] Alias `Numeric#zero?` and `Float#zero?` as `Numeric#empty?` and `Float#empty?` sawadatsuyoshi
2021-04-02 4:24 ` [ruby-core:103164] " merch-redmine
2021-04-02 5:23 ` [ruby-core:103165] " sawadatsuyoshi
2021-04-02 5:42 ` [ruby-core:103166] " sawadatsuyoshi
2021-04-02 6:21 ` [ruby-core:103167] " muraken
2021-04-02 7:21 ` [ruby-core:103171] " marcandre-ruby-core
2021-04-02 10:09 ` eregontp [this message]
2021-04-02 14:40 ` [ruby-core:103186] " sawadatsuyoshi
2021-04-02 15:39 ` [ruby-core:103188] " xtkoba+ruby
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.ruby-lang.org/en/community/mailing-lists/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=redmine.journal-91250.20210402100912.2963@ruby-lang.org \
--to=ruby-core@ruby-lang.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).