[#379166] question: threads behaviour — Raphael Bauduin <rblists@...>

Hi,

14 messages 2011/03/01

[#379190] exec using sh -c or directly running the command, depending on the system — Xavier No謖le <xavier.noelle@...>

Hello !

8 messages 2011/03/01

[#379261] How can i get the first letter of this string — duc nguyen <minhduct4@...>

Hello, i'm a newbie. I have a question that how can i get the first

10 messages 2011/03/03

[#379285] Extracting the shortest string from an array — Iñaki Baz Castillo <ibc@...>

Hi, given the following array:

12 messages 2011/03/03

[#379299] How to assign an element to a hash only if its value is not nil? — "Thomas W." <thomas@...>

hash = {}

13 messages 2011/03/03

[#379327] extconf.rb spitting out SH Makefile on windows? — Mr Eiland <mreiland1978@...>

Title says it all, I'm running ruby extconf.rb in a visual studio 2008

18 messages 2011/03/03
[#379883] Re: extconf.rb spitting out SH Makefile on windows? — Luis Lavena <luislavena@...> 2011/03/15

On Mar 15, 3:09=A0am, Mr Eiland <mreiland1...@yahoo.com> wrote:

[#379410] Ruby - Missed some core computer science world ? — Lucky Dev <lucky.developer@...>

I am doing ruby programming and been developing rails3 apps for some

16 messages 2011/03/06

[#379423] How to get class of BasicObject ancestor (Ruby 1.9.2)? — Alexey Petrushin <axyd80@...>

There's no :class method on BasicObject, is there any way to get class

9 messages 2011/03/06

[#379430] (ArgumentError) - in `initialize': wrong number of arguments (4 for 0) — Micah Wolfe <52w7te9ara@...>

Greetings all,

12 messages 2011/03/06

[#379469] basic programming question, help please — Kaye Ng <sbstn26@...>

class Square

17 messages 2011/03/07
[#379471] Re: basic programming question, help please — Mayank Kohaley <mayank.kohaley@...> 2011/03/07

The class method in Ruby is represented using self.<method name> or <class

[#379487] http post and authorization header for twitter — boo boo <s.w.timko@...>

I am trying to send an authorization header to the twitter api

16 messages 2011/03/07

[#379524] Duplicate methods removal in Ruby's TODO ? — David Unric <dunric29a@...>

Hi,

15 messages 2011/03/08

[#379597] Comparison between C++ and Ruby Variables — "Mayank K." <mayank.kohaley@...>

I have blogged about the comparison between c++ and ruby variables and

10 messages 2011/03/09

[#379686] What do you use with Ruby for GUI programming and why? — Robert <sigzero@...>

Is there a push to one toolkit or the other?

29 messages 2011/03/11
[#379713] Re: What do you use with Ruby for GUI programming and why? — Steve Klabnik <steve@...> 2011/03/11

I use Shoes. I'm biased; I'm one of the maintainers.

[#379715] Re: What do you use with Ruby for GUI programming and why? — Shadowfirebird <shadowfirebird@...> 2011/03/11

> I use Shoes. I'm biased; I'm one of the maintainers.

[#379755] send() with a block? — 7stud -- <bbxx789_05ss@...>

Why don't the ruby docs say that send() can take a block?

23 messages 2011/03/12
[#379756] Re: send() with a block? — "Sean O'Halpin" <sean.ohalpin@...> 2011/03/12

On Sat, Mar 12, 2011 at 8:45 PM, 7stud -- <bbxx789_05ss@yahoo.com> wrote:

[#379757] Re: send() with a block? — Peter Zotov <whitequark@...> 2011/03/12

On Sun, 13 Mar 2011 06:01:31 +0900, Sean O'Halpin wrote:

[#379845] Ruby jobs — Toby Gambill <toby.gambill@...>

All=20

25 messages 2011/03/14

[#379846] Understanding YAML and this practice in general — Fily Salas <fs_tigre@...>

Hi,

12 messages 2011/03/15

[#379889] SHA1 Decryption!! — Gormare Kalss <gormare@...>

Hello! I hope that no one will be offended by this question!! Ive been

12 messages 2011/03/15

[#379945] TCPSocket: how to realize that the other endpoint has closed the connection? — Iñaki Baz Castillo <ibc@...>

Hi, I open a TCP connection with a server:

10 messages 2011/03/16

[#379998] Inserting hash value slows down as table gets larger — Philip Rhoades <phil@...>

People,

11 messages 2011/03/17

[#380037] matching a word in any number of characters — Chad Perrin <code@...>

I have need of some code to match any of a number of words in any number

12 messages 2011/03/18

[#380074] Method Call from inside a file. — Tridib Bandopadhyay <tridib04@...>

I coded a new method within gc.c file defining as--

11 messages 2011/03/19

[#380085] A question about Ruby 1.9's "external encoding" — Albert Schlef <albertschlef@...>

I have the following program:

11 messages 2011/03/20

[#380116] The best practices to learn Ruby — Fily Salas <fs_tigre@...>

Hi,

22 messages 2011/03/20

[#380205] How could I make the Ruby 1.9 string ignore the invalid utf-8 byte sequence in split? — Stanley Xu <wenhao.xu@...>

Dear buddies,

8 messages 2011/03/22

[#380220] Ruby corrupts after a period of time — Chip Burke <cburke@...>

I have recently upgraded from Ruby 1.8.7 to 1.9.2p180 on Fedora. After a

19 messages 2011/03/22

[#380262] Converting PHP to Ruby — "Jack W." <jack.whitman403@...>

Hi all,

13 messages 2011/03/23

[#380306] shortcut for add unless nil ? — Iain Barnett <iainspeed@...>

Hi,

24 messages 2011/03/24
[#380308] Re: shortcut for add unless nil ? — Xavier Noria <fxn@...> 2011/03/24

You could do something like this (untested):

[#380339] Re: shortcut for add unless nil ? — Iain Barnett <iainspeed@...> 2011/03/25

[#380347] Re: shortcut for add unless nil ? — Robert Klemme <shortcutter@...> 2011/03/25

On Fri, Mar 25, 2011 at 7:02 AM, Iain Barnett <iainspeed@gmail.com> wrote:

[#380369] Re: shortcut for add unless nil ? — Colin Bartlett <colinb2r@...> 2011/03/25

On Fri, Mar 25, 2011 at 7:52 AM, Robert Klemme

[#380382] Re: shortcut for add unless nil ? — Iain Barnett <iainspeed@...> 2011/03/25

[#380385] Re: shortcut for add unless nil ? — Robert Klemme <shortcutter@...> 2011/03/25

On Fri, Mar 25, 2011 at 4:42 PM, Iain Barnett <iainspeed@gmail.com> wrote:

[#380389] Re: shortcut for add unless nil ? — Iain Barnett <iainspeed@...> 2011/03/25

[#380394] Re: shortcut for add unless nil ? — serialhex <serialhex@...> 2011/03/25

...personally i think it would be nice to be able to define new operators

[#380325] Regexp, matching only the content within parentheses — Emil Kampp <ekampp@...>

Hi.

12 messages 2011/03/24

[#380359] How to get the value of a singleton class? — Joey Zhou <yimutang@...>

Here is a sample code:

14 messages 2011/03/25
[#380360] Re: How to get the value of a singleton class? — Robert Dober <robert.dober@...> 2011/03/25

On Fri, Mar 25, 2011 at 1:23 PM, Joey Zhou <yimutang@gmail.com> wrote:

[#380361] Do I need to upgrade to the latest version of Ruby — Fily Salas <fs_tigre@...>

Hi,

10 messages 2011/03/25

[#380368] Dynamic classes — PsiPro <arjesins@...>

So I am working on some metaprograming and have some questions about

13 messages 2011/03/25

[#380401] How to "find" new lines — Damir Sigur <damir@...>

I am new to ruby, and was trying to make a small code which would check

12 messages 2011/03/25

[#380520] A two-minute Ruby flavoured survey to help shape a new service. — "Mic P." <micpringle@...>

Please take a few seconds to fill out the following survey ...

12 messages 2011/03/28
[#380528] Re: A two-minute Ruby flavoured survey to help shape a new service. — Chad Perrin <code@...> 2011/03/28

On Tue, Mar 29, 2011 at 03:46:17AM +0900, Mic P. wrote:

[#380558] Why can a floating point number be used as an array index? — Jeff Dik <s450r1@...>

Why can a floating point number be used as an array index? Anybody

11 messages 2011/03/29

[#380573] Encoding issues when parsing HTML in 1.9 — ctdev <ctdev421@...>

Hi, I'm having some encoding problems while parsing HTML with Nokogiri

12 messages 2011/03/30

[#380586] functional paradigm taking over — Robert Klemme <shortcutter@...>

Hi,

133 messages 2011/03/30
[#380593] Lambda Shambda — Mike Stephens <rubfor@...> 2011/03/30

Although a Ruby fan, I must say I'm spending all my time looking at

[#380612] Re: Lambda Shambda — Chad Perrin <code@...> 2011/03/30

On Wed, Mar 30, 2011 at 06:38:19PM +0900, Mike Stephens wrote:

[#380617] Re: Lambda Shambda — Robert Klemme <shortcutter@...> 2011/03/30

On Wed, Mar 30, 2011 at 4:49 PM, Chad Perrin <code@apotheon.net> wrote:

[#380641] Re: Lambda Shambda — Chad Perrin <code@...> 2011/03/30

On Thu, Mar 31, 2011 at 12:19:25AM +0900, Robert Klemme wrote:

[#380664] Re: Lambda Shambda — Phillip Gawlowski <cmdjackryan@...> 2011/03/31

On Thu, Mar 31, 2011 at 1:24 AM, Chad Perrin <code@apotheon.net> wrote:

[#380669] Re: Lambda Shambda — Chad Perrin <code@...> 2011/03/31

On Thu, Mar 31, 2011 at 12:30:07PM +0900, Phillip Gawlowski wrote:

[#380683] Re: Lambda Shambda — Mike Stephens <rubfor@...> 2011/03/31

Chad Perrin wrote in post #990130:

[#380812] Re: Lambda Shambda — Josh Cheek <josh.cheek@...> 2011/04/02

On Thu, Mar 31, 2011 at 5:08 AM, Mike Stephens <rubfor@recitel.net> wrote:

[#380825] Re: Lambda Shambda — Mike Stephens <rubfor@...> 2011/04/03

Josh Cheek wrote in post #990579:

[#380831] Re: Lambda Shambda — Phillip Gawlowski <cmdjackryan@...> 2011/04/03

On Sun, Apr 3, 2011 at 7:29 AM, Mike Stephens <rubfor@recitel.net> wrote:

[#380839] Re: Lambda Shambda — Everett L Williams II <rett@...> 2011/04/03

*Let's not pay too much attention to the code snobs on here. I've yet to

[#380840] Re: Lambda Shambda — Phillip Gawlowski <cmdjackryan@...> 2011/04/03

On Sun, Apr 3, 2011 at 2:17 PM, Everett L Williams II

[#380893] Re: functional paradigm taking over — Mike Stephens <rubfor@...> 2011/04/04

This thread has been touching upon three issues - functional languages

[#380907] Re: functional paradigm taking over — Everett L Williams II <rett@...> 2011/04/04

*Mike,*

[#380910] Re: functional paradigm taking over — Johnny Morrice <spoon@...> 2011/04/04

> But, as I have said, I have seen some absolutely

[#380913] Re: functional paradigm taking over — Johnny Morrice <spoon@...> 2011/04/04

> I've seen some absolutely amazing things done with befunge! Networked

[#380925] Re: functional paradigm taking over — Chad Perrin <code@...> 2011/04/04

On Mon, Apr 04, 2011 at 09:29:13PM +0900, Johnny Morrice wrote:

[#380926] Re: functional paradigm taking over — Johnny Morrice <spoon@...> 2011/04/04

> I have not seen "befunge" as a euphemism for brainfuck before. Is

[#380933] Re: functional paradigm taking over — Chad Perrin <code@...> 2011/04/04

On Tue, Apr 05, 2011 at 12:42:20AM +0900, Johnny Morrice wrote:

[#381261] Re: functional paradigm taking over — Robert Dober <robert.dober@...> 2011/04/10

On Mon, Apr 4, 2011 at 8:07 PM, Chad Perrin <code@apotheon.net> wrote:

[#381324] Re: functional paradigm taking over — Kevin <darkintent@...> 2011/04/12

Aren't all programs languages as the program describes a particular problem

[#381330] Re: functional paradigm taking over — Phillip Gawlowski <cmdjackryan@...> 2011/04/12

On Tue, Apr 12, 2011 at 8:18 AM, Kevin <darkintent@gmail.com> wrote:

[#381331] Re: functional paradigm taking over — Kevin <darkintent@...> 2011/04/12

No I'm not confusing them, all programs provide the vocabulary (Means of

[#381356] Re: functional paradigm taking over — Chad Perrin <code@...> 2011/04/12

On Tue, Apr 12, 2011 at 04:47:17PM +0900, Kevin wrote:

[#381400] Re: functional paradigm taking over — Kevin <darkintent@...> 2011/04/13

Why don't you actually go take a look at the definition of language,

[#381401] Re: functional paradigm taking over — Josh Cheek <josh.cheek@...> 2011/04/13

On Wed, Apr 13, 2011 at 12:53 AM, Kevin <darkintent@gmail.com> wrote:

[#381403] Re: functional paradigm taking over — Kevin <darkintent@...> 2011/04/13

That is all well and good. But does that fact make the definitions I am

[#381408] Re: functional paradigm taking over — Phillip Gawlowski <cmdjackryan@...> 2011/04/13

On Wed, Apr 13, 2011 at 8:38 AM, Kevin <darkintent@gmail.com> wrote:

[#380623] string/array slices — Patrick Tyler <patrick.a.tyler@...>

Hello,

15 messages 2011/03/30

[#380689] how to refine the code to avoid using fork on windows? — Ethan Huo <firewall888@...>

here is the thing, i need to move a previous ruby program from Linux to

9 messages 2011/03/31

[#380710] Simple array.each do |x| question — "Kyle X." <haebooty@...>

Hello, I am new to ruby and cannot understand why this code is not

18 messages 2011/03/31
[#380711] Re: Simple array.each do |x| question — Roger Braun <roger@...> 2011/03/31

Hi

Re: How to assign an element to a hash only if its value is not nil?

From: Colin Bartlett <colinb2r@...>
Date: 2011-03-04 17:56:10 UTC
List: ruby-talk #379355
On Fri, Mar 4, 2011 at 3:20 PM, Mike Moore <blowmage@gmail.com> wrote:
> On Fri, Mar 4, 2011 at 3:05 AM, Robert Klemme
> <shortcutter@googlemail.com> wrote:
>> If you want to clearly communicate the intent you can add a comment or
>> an assert statement to that effect. =A0First inserting something that is
>> removed later is totally backwards.
>
> I'm sure there are cases where removing values from a hash is appropriate=
.
Yes, but I think one of Robert Klemme's points was why put values into
a hash only to remove them immediately.

>> Plus, you might remove more than intended,
>> e.g. if there are nil values inserted previously and you
>> only want to avoid inserting nils during _this_ method call.
>
> In that case where you don't want to remove all nil values from a hash
> you shouldn't call `delete_if { |k, v| v.nil? }`
Which rather proves Robert Klemme's point?

>> So, you proposed solution is less efficient and error prone.
>> Now how is that beautiful?
> Ouch. So its ugly *AND* buggy...
I'll avoid the beautiful/ugly debate. (I have some sympathy with
Dirac's views on the necessity of "beauty" in theories, but at the end
of the day I'll usually go with whatever overall works best, even if
it looks "ugly".)

> =A0# Check for nil values on hash assignment
> =A0# Assuming false is a valid value
> =A0h =A0 =A0 =A0 =A0 =3D {}
> =A0h[:one] =A0 =3D one if !one.nil? # local method
> =A0h[:two] =A0 =3D some_obj.two_method if !some_obj.two_method.nil?
> =A0tmp =A0 =A0 =A0 =3D expensive_format_three(some_obj, some_other_obj)
> =A0h[:three] =3D tmp if !tmp.nil?
> =A0h
>
> =A0# Delete nil values after hash assignment
> =A0h =3D {
> =A0 =A0 =A0 =A0:one =A0 =3D> one, # local method
> =A0 =A0 =A0 =A0:two =A0 =3D> some_obj.two_method,
> =A0 =A0 =A0 =A0:three =3D> expensive_format_three(some_obj, some_other_ob=
j)
> =A0 =A0 =A0}.delete_if { |k, v| v.nil? }

I'm not sure what that code does, but taking what the OP wanted to do
as the starting point.
> hash =3D {}
>    hash[:key] =3D myvalue
> How to assign hash[:key] only if myvalue is not nil?
> Current solution is:
>    hash[:key] =3D myvalue unless myvalue.nil?
> Is there something more beautiful?

Again avoiding the "beauty question" (beauty is in the eye of the
beholder), that seems to me to do what the OP wants, and concisely
says what it's doing.

I can see four problems with first assigning to the hash even if the
value is nil, and then deleting nil values from the hash. Robert
Klemme pointed out that it was inefficient, and that it might remove
previous wanted nil values in the hash.

Also, the code is longer, and you might override (and then delete) an
existing value if it has the same key as a new key & value pair in
which the value is nil: see what happens to :two in the following:

#ruby 1.9.1p430 (2010-08-16 revision 28998) [i386-mingw32]

hhh =3D { :zero =3D> 0, :one =3D> 1, :two =3D> 2, :three =3D> nil, :four =
=3D> nil }
kv =3D [ [:one,   11], [:two,  nil],
       [:three, 33], [:four, nil],
       [:five,   5], [:six,  nil] ]

h =3D hhh.dup
puts; puts h.inspect
kv.each { |k, v| h[k] =3D v unless v.nil? }
puts "#=3D> #{h.inspect}"

# {:zero=3D>0, :one=3D>1, :two=3D>2, :three=3D>nil, :four=3D>nil}
#=3D> {:zero=3D>0, :one=3D>11, :two=3D>2, :three=3D>33, :four=3D>nil, :five=
=3D>5}

h =3D hhh.dup
puts; puts h.inspect
kv.each { |k, v| h[k] =3D v }
h.delete_if { |k, v| v.nil? }
puts "#=3D> #{h.inspect}"

# {:zero=3D>0, :one=3D>1, :two=3D>2, :three=3D>nil, :four=3D>nil}
#=3D> {:zero=3D>0, :one=3D>11, :three=3D>33, :five=3D>5}

In This Thread