BernardK

BernardK

Programming Ruby 3.2 (5th Edition): B4.0 page 553, confusion about flatten

@noelrappin

page 553, in Converting Hashes, lines 2-3 :

… If you want a single-dimensional array,
you can use flatten, which is hash.to_a.flatten. By default, flatten does not flatten values that
happen to be arrays …

I have checked that :

irb(main):125:0> hash = {a: 1, b: 2, c: [3, [55,66]], d: 4}
=> {:a=>1, :b=>2, :c=>[3, [55, 66]], :d=>4}
irb(main):126:0> hash.to_a.flatten
=> [:a, 1, :b, 2, :c, 3, 55, 66, :d, 4]

Then I was confused to read that by default flatten does not flatten …

As Array#flatten behaves differently as Hash#flatten, I suggest to replace flatten by Hash#flatten :

By default, Hash#flatten does not flatten values that …

First Post!

noelrappin

noelrappin

Author of Modern Front-End Development for Rails

Okay, cleaned this up to:

If you want a single-dimensional array, you can use Hash#flatten(level = 1), which is equivalent to hash.to_a.flatten(level). By default, Hash#flatten does not recursively flatten values that happen to be arrays—you can do that with an optional argument that specifies how many levels of sub-array values are flattened.

Where Next?

Popular Pragmatic Bookshelf topics Top

brianokken
Many tasks_proj/tests directories exist in chapters 2, 3, 5 that have tests that use the custom markers smoke and get, which are not decl...
New
JohnS
I can’t setup the Rails source code. This happens in a working directory containing multiple (postgres) Rails apps. With: ruby-3.0.0 s...
New
herminiotorres
Hi! I know not the intentions behind this narrative when called, on page XI: mount() |> handle_event() |> render() but the correc...
New
rmurray10127
Title: Intuitive Python: docker run… denied error (page 2) Attempted to run the docker command in both CLI and Powershell PS C:\Users\r...
New
swlaschin
The book has the same “Problem space/Solution space” diagram on page 18 as is on page 17. The correct Problem/Solution space diagrams ar...
New
adamwoolhether
Is there any place where we can discuss the solutions to some of the exercises? I can figure most of them out, but am having trouble with...
New
jwandekoken
Book: Programming Phoenix LiveView, page 142 (157/378), file lib/pento_web/live/product_live/form_component.ex, in the function below: d...
New
EdBorn
Title: Agile Web Development with Rails 7: (page 70) I am running windows 11 pro with rails 7.0.3 and ruby 3.1.2p20 (2022-04-12 revision...
New
a.zampa
@mfazio23 I’m following the indications of the book and arriver ad chapter 10, but the app cannot be compiled due to an error in the Bas...
New
New

Other popular topics Top

PragmaticBookshelf
Free and open source software is the default choice for the technologies that run our world, and it’s built and maintained by people like...
New
AstonJ
poll poll Be sure to check out @Dusty’s article posted here: An Introduction to Alternative Keyboard Layouts It’s one of the best write-...
New
PragmaticBookshelf
Rust is an exciting new programming language combining the power of C with memory safety, fearless concurrency, and productivity boosters...
New
AstonJ
I ended up cancelling my Moonlander order as I think it’s just going to be a bit too bulky for me. I think the Planck and the Preonic (o...
New
PragmaticBookshelf
Use WebRTC to build web applications that stream media and data in real time directly from one user to another, all in the browser. ...
New
Maartz
Hi folks, I don’t know if I saw this here but, here’s a new programming language, called Roc Reminds me a bit of Elm and thus Haskell. ...
New
PragmaticBookshelf
Author Spotlight: Peter Ullrich @PJUllrich Data is at the core of every business, but it is useless if nobody can access and analyze ...
New
New
CommunityNews
A Brief Review of the Minisforum V3 AMD Tablet. Update: I have created an awesome-minisforum-v3 GitHub repository to list information fo...
New
Fl4m3Ph03n1x
Background Lately I am in a quest to find a good quality TTS ai generation tool to run locally in order to create audio for some videos I...
New

Sub Categories: