被诅咒的长生不老药

2020-10-19 03:55:09

Defmodule FooBar do def foo(A)do if a<;0 do bar(a,-1)Else bar(a,1)end end defp bar(a,b)do IO.check(a*b)endend。

我喜欢长生不老药,但我认为大多数时候它看起来就像功能强大的Ruby。我想让这个代码看起来像长生不老药。

首先,这段代码缺少所有ELEXIR开发人员最好的朋友:|>;。让我们添加一些|>;。

Defmodule FooBar do def foo(A)do if a<;0 do a|>bar(-1)否则a|>bar(1)end end defp bar(a,b)do(a*b)|>;IO.check()endend。

嗯。它绝对更好,但我的意思是,那只是3个,我想要更多。

Defmodule FooBar do def Foo(A)do(A)do(a<;0)|&>;if do a|&>bar(-1)否则a|&>bar(1)end end defp bar(a,b)do(a*b)|>;IO.check()endend。

Defmodule FooBar do def foo(A)do|&>;Kernel。<;(0)|>;if do|&>bar(-1)否则|&>bar(1)end end defp bar(a,b)do a|&>;Kernel。*(B)|&>IO.check()endend。

药剂医生说defmodule只是一个宏。这是不是意味着我可以直接|&>进入demodule?

FooBar|&>;defmodule do def Foo(A)do|&>;Kernel.<;(0)|>;if do|&>bar(-1)否则a|&>;bar(1)end defp bar(a,b)do a|&>;Kernel.*(B)|>;IO.check()end。

FooBar|&>defmodule执行|>;foo()|&>;def执行|&>;内核。<;(0)|>;如果执行|&>bar(-1),则|&>bar(1)结束|&>bar(B)|&>defp执行|&>;内核。*(B)|>;IO.spect()end.。

我们正在取得进展,但还是感觉有些不对劲。这个模块真的做不了什么,所以也许它不应该那么长?此外,我认为我们需要更多:。原子是非常灵丹妙药的,所以让我们做更多的事情吧:

FooBar|>;defmodule(do:(a|>;foo()|>;def(do:a|>;内核.<;(0)|>;if(do:a|>;bar(-1),否则:a|>;bar(1)a|>;bar(B)|>;defp(do:a|>;内核.*(B)|>;IO.Inspect()。

FooBar|>;defmodule([{:do,(a|&>;foo()|&>;def([{:do,a|&>;内核.<;(0)|>;if([{:do,a|&>;bar(-1)},{:Else,a|&>;bar(1)}])}])a|&>bar(B)|&>;defp([{:do,a|&>;内核.*(B)|>;IO.Inspect()}]))}])