Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
%Erlang
Person = person:find(john),
Modified = person:set(name, john_doe, Person)
true = person:save(Modified)
%Elixir
In Elixir, this would be written as:
person = Person.find('john)
modified = person.set('name, 'john_doe)
true = modified.save
object Person
def constructor(name, age)
{ 'name: name, 'age: age }
end
def name
@name
end
def age
@age
end
def name(value)
self.set_ivar('name, value)
end
end
person = Person.new('john, 24)
another_person = person.name('john_doe)
person.name % => 'john
person.age % => 24
another_person.name % => 'johh_doe
another_person.age % => 24
Эти объекты — синтаксический сахар. Они скрывают необходимость использования отдельной структуры для передачи в различные функции:Изменение свойств объекта возвращает новую структуру, как и в Erlang:case Frame#video_frame.codec of
h264 -> handle_h264(Frame);
aac -> handle_aac(Frame);
pcma -> handle_pcma(Frame)
end
case Frame#video_frame.codec of
h264 -> handle_h264(Frame)
; aac -> handle_aac(Frame)
; pcma -> handle_pcma(Frame)
end
if ( (flag & TCP_NOKIDDING) ||
zlag < Z_LAG_THR ) {
...
}
if (flag & TCP_NOKIDDING) {
..
}
switch(frame->codec) {
case H264: handle_h264(frame); break;
case AAC: handle_aac(frame); break;
case PCMA: handle_pcma(frame); break;
}
handle_frame(Frame),
..
handle_frame(#video_frame{ codec = h264 } = Frame) ->
...
ну и так далее по тексту
if ( (flag & TCP_NOKIDDING) ||
zlag < Z_LAG_THR ) {
...
}if (
(flag & TCP_NOKIDDING)
|| zlag < Z_LAG_THR
) {
...
}
Elixir