On 29 January 2018 at 00:25, Shane Curcuru <[email protected]> wrote:
> Craig Russell wrote on 1/25/18 8:48 PM:
>>
>>> On Jan 25, 2018, at 8:44 AM, Sam Ruby <[email protected]> wrote:
> ...snip...
>>> Looks to me like the redirect worked, but the if check did not do what
>>> you expected.  @phase is neither 'discuss' nor 'vote'.  Just a guess,
>>> but perhaps what you want is @progress['phase'] as this data was read
>>> from JSON so the hash indexes are likely to be strings.
>>
>> This was totally unexpected. I thought Ruby was supposed to be user 
>> friendly. :)
>
> Debug printouts and stackoverflow are your friend - even when you've
> been writing code for a while.  8-)
>
>> @progress['phase'] is different from @progress[:phase]
>
> Yes, also depending on *where* @progress[] came from - i.e. is it a hash
> you built in memory, or a hash you read from some JSON/YAML file?  I
> just got bit by this one too recently.
>
> Symbols (a name with a colon in :front or sometimes after:) are not
> Strings, as much as they sometimes look like them.
>
> - Hashes created in memory (or passed around a program) using :symbols
> will work great (and are fast).
>
> - Hashes with symbols for keys written out to disk are converted into
> strings.  When you read the Hash back from disk, it's now *string* keys.
>
> - Symbols also have a different way to write: when defining a {} value:
>
> ShaneMac:wdev curcuru$ irb
> irb(main):001:0> h = {'string_key' => 'value', :symbol_key => 'other
> value', symbol_special: 'short form' }
> => {"string_key"=>"value", :symbol_key=>"other value",
> :symbol_special=>"short form"}
>
> irb(main):002:0> h[:symbol_special]
> => "short form"
>
> irb(main):003:0> h[:new_symbol] = 'extra value'
> => "extra value"
>
> irb(main):004:0> h
> => {"string_key"=>"value", :symbol_key=>"other value",
> :symbol_special=>"short form", :new_symbol=>"extra value"}
>
> But - if you read the hash in from disk, all the keys will be strings.

If you are parsing JSON you can choose to create symbolic keys instead
of strings.

> Make more sense now?
>>
>> I just learnt about :phase the symbol recently, and now I have to learn 
>> more? :(
>>
>> Anyway, prob solved.
>>
>> THANKS!
>>
>> Craig
>>
>> P.S. Who knew this was so complicated? ;-)
>
>
> --
>
> - Shane
>   https://www.apache.org/foundation/marks/resources

Reply via email to