ycv005

ycv005

How to assign a variable to a value in the case condition. Is the following way correct? If a better solution exists, let me know. Your help will be highly appreciable.

    case stage_id do
      "" ->
        stage_id = JobStage.get_job_stage(job_opening_id, 1).id
    end

Showing Posts 1 to 8

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe
stage_id = case stage_id do
  "" -> JobStage.get_job_stage(job_opening_id, 1).id
  _ -> stage_id 
end
peerreynders

peerreynders

It would likely generate the following warning:

Note variables defined inside case, cond, fn, if and similar do not leak. If you want to conditionally override an existing variable “stage_id”, you will have to explicitly return the variable.

NobbZ

NobbZ

No, it won’t.

This is a breaking change somewhere between 1.6 and 1.8. The warning has been removed and instead the behaviour changed.

There is no imperative assignment anymore in elixir.

peerreynders

peerreynders

I should have stuck to error then:

  • [Kernel] Raise on unsafe variables in order to allow us to better track unused variables (also known as imperative assignment / variable leakage)

Release v1.7.0 · elixir-lang/elixir · GitHub
Elixir v1.3 released - The Elixir programming language
Assignments from within 'if' statements · Issue #7403 · elixir-lang/elixir · GitHub

Or does that mean no message at all?

Imperative Assignements are breaking the application in 1.7 update · Issue #8076 · elixir-lang/elixir · GitHub

NobbZ

NobbZ

I’m currently running 1.8.2-otp-21 and see this behaviour:

iex(1)> defmodule M do
...(1)> def f do
...(1)>   x = :outer
...(1)>   case "" do
...(1)>     "" ->
...(1)>       x = :inner
...(1)>   end
...(1)>   IO.puts x
...(1)> end
...(1)> end
warning: variable "x" is unused (if the variable is not meant to be used, prefix it with an underscore)
  iex:6
iex(2)> M.f
outer
:ok 

As you can see, I see a warning about the “inner” x not beeing used, but I do not see a warning about the imperativ assignment, instead “outer” x stays unchanged.

peerreynders

peerreynders

OK - but there still is a warning.

warning: variable “stage_id” is unused (if the variable is not meant to be used, prefix it with an underscore)

though I’d expect the new one to be more mystifying to newcomers. And ignoring the warning will have undesirable consequences.

ycv005

ycv005 OP

Thanks bro

ycv005

ycv005 OP

Thanks to all.

— All posts loaded —

Where Next? Top

Trending in Discussions Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
axelson
Hi there! :wave: @frigidcode and I (but mostly him) have been running an Elixir Book club, we’re almost done with Designing Elixir Syste...
New
achempion
I’ve been using Emacs as my main code editor for more than a two years. It’s a custom build version although I’ve tried doom emacs and sp...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New
jtormey
Lately I’ve been thinking about how to organize components as a LiveView application grows. One of the pain points I’ve found (for myself...
New
Null-logic-0
What IDE or editor are you using for Elixir development? Personally, I use Zed, and I really like it, but sometimes I wish there were a ...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
georgeguimaraes
Just published claude-code-elixir, a plugin marketplace for Claude Code with Elixir support. These are the plugins I’ve been using for my...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews