From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: poffice@blade.nagaokaut.ac.jp Delivered-To: poffice@blade.nagaokaut.ac.jp Received: from kankan.nagaokaut.ac.jp (kankan.nagaokaut.ac.jp [133.44.2.24]) by blade.nagaokaut.ac.jp (Postfix) with ESMTP id D3BBF17C8DE1 for ; Sun, 15 Jul 2012 09:11:49 +0900 (JST) Received: from funfun.nagaokaut.ac.jp (funfun.nagaokaut.ac.jp [133.44.2.201]) by kankan.nagaokaut.ac.jp (Postfix) with ESMTP id 203C1EA6D09 for ; Sun, 15 Jul 2012 09:08:55 +0900 (JST) Received: from localhost (localhost.nagaokaut.ac.jp [127.0.0.1]) by funfun.nagaokaut.ac.jp (Postfix) with ESMTP id 6687E8FC28 for ; Sun, 15 Jul 2012 09:08:55 +0900 (JST) X-Virus-Scanned: amavisd-new at funfun.nagaokaut.ac.jp Received: from funfun.nagaokaut.ac.jp ([127.0.0.1]) by localhost (funfun.nagaokaut.ac.jp [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HilQsxwuJdEk for ; Sun, 15 Jul 2012 09:08:55 +0900 (JST) Received: from voscc.nagaokaut.ac.jp (voscc.nagaokaut.ac.jp [133.44.1.100]) by funfun.nagaokaut.ac.jp (Postfix) with ESMTP id 45AF48FC1B for ; Sun, 15 Jul 2012 09:08:55 +0900 (JST) Received: from carbon.ruby-lang.org (carbon.ruby-lang.org [221.186.184.68]) by voscc.nagaokaut.ac.jp (Postfix) with ESMTP id E9B38952425 for ; Sun, 15 Jul 2012 09:08:53 +0900 (JST) Received: from beryllium.ruby-lang.org (beryllium.ruby-lang.org [127.0.0.1]) by carbon.ruby-lang.org (Postfix) with ESMTP id B429A3C229415; Sun, 15 Jul 2012 09:08:52 +0900 (JST) Received: from fluorine.ruby-lang.org (www.rubyist.net [210.251.121.216]) by carbon.ruby-lang.org (Postfix) with ESMTP id BBF5D3C21EBAC for ; Sun, 15 Jul 2012 09:08:51 +0900 (JST) Received: from ruby-lang.org (localhost [127.0.0.1]) by fluorine.ruby-lang.org (Postfix) with ESMTP id A68873ED59 for ; Sun, 15 Jul 2012 09:08:51 +0900 (JST) Delivered-To: ruby-core@ruby-lang.org Date: Sun, 15 Jul 2012 09:08:51 +0900 Posted: Sun, 15 Jul 2012 09:08:51 +0900 From: "drbrain (Eric Hodel)" Reply-To: ruby-core@ruby-lang.org Subject: [ruby-core:46484] [ruby-trunk - Feature #6721] Object#yield_self To: ruby-core@ruby-lang.org Message-Id: References: X-ML-Name: ruby-core X-Mail-Count: 46484 X-MLServer: fml [fml 4.0.3 release (20011202/4.0.3)]; post only (only members can post) X-ML-Info: If you have a question, send e-mail with the body "help" (without quotes) to the address ruby-core-ctl@ruby-lang.org; help= X-Mailer: Redmine X-Redmine-Issue-Author: alexeymuranov X-Auto-Response-Suppress: OOF X-Redmine-Issue-Id: 6721 X-Redmine-Mailinglistintegration-Message-Ids: 16804 X-Redmine-Project: ruby-trunk Auto-Submitted: auto-generated X-Redmine-Site: Ruby Issue Tracking System X-Redmine-Host: bugs.ruby-lang.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Precedence: bulk List-Id: ruby-core.ruby-lang.org List-Software: fml [fml 4.0.3 release (20011202/4.0.3)] List-Post: List-Owner: List-Help: List-Unsubscribe: Issue #6721 has been updated by drbrain (Eric Hodel). Your current names are less clear than using a local variable. Using a local variable reveals your intentions very clearly: o = object.associated_object attr = o.attribute if o It's obvious that attr is only set if the associated object exists. For your second example there's just too much going on to clearly see what the intention is. By first separating data gathering from creating of the mailing_address Hash things become much clearer: address = person[:address] street = address[:street] if address.is_a?(Hash) mailing_address = { :name => person[:name], :street => street, } As in the first example, your current names don't reveal what yield_self is supposed to do in a way that's clearer than using local variables for construction of mailing_address ---------------------------------------- Feature #6721: Object#yield_self https://bugs.ruby-lang.org/issues/6721#change-28124 Author: alexeymuranov (Alexey Muranov) Status: Open Priority: Normal Assignee: Category: Target version: =begin I think the following method is missing from Ruby: class Object def yield_self(*args) yield(self, *args) end end I do not know a good use case, but it looks very natural to me. It can be used in method chains. What do you think? Is there an alternative? =end -- http://bugs.ruby-lang.org/