Use assigned variables on its own assign statement
Javascript allows you to use an assigned variables into the same assignment statement. This is a non expected behavior for me as the first languages I've learned were compiled languages and that would fail compilation, at least on the ones I've experienced with.
Here's an example:
Javascript ES2015:
const [hello, world] = [
() => `Hello ${world()}`,
() => "World",
]
hello()
//=> "Hello World"
In this example I'm assigning the second function into the world
variable by using destructuring assignment and I'm using this by calling world()
in the first function.
Ruby:
To my surprise ruby allows the same behavior:
hello, world = [
lambda { "Hello #{world.call}" },
lambda { "World" },
]
hello.call
#=> "Hello World"
Elixir:
Well, Elixir will act as I previously expected, so assigned variables are allowed to be used only after the statement that creates them.
[hello, world] = [
fn -> "Hello #{world.()}" end,
fn -> "World" end,
]
hello.()
#=> ERROR** (CompileError) iex:2: undefined function world/0
I won't start using this approach, but it's important to know that's possible.
Tweet