ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
From: Anurag Priyam <anurag08priyam@gmail.com>
To: ruby-core@ruby-lang.org
Subject: [ruby-core:41757] Re: [ruby-trunk - Feature #5781] Query attributes (attribute methods ending in `?` mark)
Date: Wed, 21 Dec 2011 01:06:03 +0900	[thread overview]
Message-ID: <CAD1m08WoJ084eA9Y7ytufLV03RTYExPQCavaaJNMeDRdaS_duA@mail.gmail.com> (raw)
In-Reply-To: <4EF09FE9.2040607@bopp.net>

On Tue, Dec 20, 2011 at 8:17 PM, Jeremy Bopp <jeremy@bopp.net> wrote:
> How about adding an attr_query method that otherwise works identically
> to attr_reader but creates a method with a '?' on the end of the given
> name instead?

I would suggest the name `predicate` instead.

class Foo
  attr :bar
  predicate :bar
end

Alternatively,

On Tue, Dec 20, 2011 at 7:33 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
> The other option is removing '?' from instance variables.  But as far as I remember no one seriously proposed the idea before, and we haven't got consensus.

Use `attr`, but if the variable name passed to `attr` contains a '?'
define a predicate corresponding to it too.

class Foo
  attr :bar?
  attr :baz
end

f = Foo.new
f.bar?  #=> nil
f.bar = 'meh'
f.bar    #=> 'meh'
f.bar?  #=> 'meh'

f.baz?  #=> NoMethodError

The predicate could be made to strictly return `true` or `false`
instead of simply behaving like an attribute reader.


The former is perhaps easier to implement, but I would like to use the
latter approach in my code.

-- 
Anurag Priyam

  reply	other threads:[~2011-12-20 16:20 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-19 19:57 [ruby-core:41728] [ruby-trunk - Feature #5781][Open] Query attributes (attribute methods ending in `?` mark) Thomas Sawyer
2011-12-20 12:52 ` [ruby-core:41754] [ruby-trunk - Feature #5781][Assigned] " Yui NARUSE
2011-12-20 14:03 ` [ruby-core:41755] [ruby-trunk - Feature #5781] " Yukihiro Matsumoto
2011-12-20 14:47   ` [ruby-core:41756] " Jeremy Bopp
2011-12-20 16:06     ` Anurag Priyam [this message]
2011-12-20 18:51 ` [ruby-core:41759] " Thomas Sawyer
2011-12-20 18:59 ` [ruby-core:41760] " Thomas Sawyer
2011-12-20 22:44 ` [ruby-core:41761] " Benoit Daloze
2011-12-21 19:27 ` [ruby-core:41766] " Joshua Ballanco
2012-10-26 21:31 ` [ruby-core:48362] " ko1 (Koichi Sasada)
2012-12-23 18:43 ` [ruby-core:51098] " trans (Thomas Sawyer)
2012-12-24  2:10 ` [ruby-core:51108] " trans (Thomas Sawyer)
2019-07-13 10:31 ` [ruby-core:93739] [Ruby master Feature#5781] " eregontp
2019-07-15  9:42 ` [ruby-core:93785] " sudo.nice
2020-01-10  6:34 ` [ruby-core:96755] " abaelter

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=CAD1m08WoJ084eA9Y7ytufLV03RTYExPQCavaaJNMeDRdaS_duA@mail.gmail.com \
    --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).