Поскольку Elixir является функциональным языком программирования, переменные являются неизменяемыми. Это означает, что вы гарантированно получите одно и то же значение до и после вызова метода, если только вы не переназначите переменную:
foo = "Hello"
AnyModule.anyMethod(foo)
foo # You are guaranteed that foo still points to the value "Hello"
Единственный способ заставить переменную foo ссылаться на какое-либо значение, отличное от того, которое ей присвоено в данный момент, - это переназначить ее:
foo = "Hello"
foo = MyModule.addThere(foo)
foo # "Hello There"
Таким образом, put_session(conn, key, value)
не может изменить переданный параметр conn
, вместо этого он возвращает новый Plug.Conn, который по существу совпадает со старым, за исключением новой пары ключ / значение.
Для правильного отображения текста необходимо назначить conn для вывода метода
conn = put_session(conn, key, value)