第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Elixir 相當(dāng)于 while true

Elixir 相當(dāng)于 while true

長風(fēng)秋雁 2023-07-11 14:53:18
我想在 Elixir 中重寫這個(gè)方法(這里用 Python 編寫)def something()    while True:        x = function()        y = function()        if x != y:            return x    function()生成一個(gè)隨機(jī)值,因此執(zhí)行遲早會(huì)結(jié)束。while True我的問題是盡可能以最“實(shí)用的方式”翻譯。我想出了這個(gè)解決方案,但我認(rèn)為可讀性不是很好。def something() do    internal(function(), function())enddefp internal(a, a) do    internal(function(), function())enddefp internal(a, _) do    aend有更好的方法嗎?PS:function()每個(gè)周期必須調(diào)用兩次,并且不能重寫。謝謝
查看完整描述

4 回答

?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

Elixirif也有變量和表達(dá)式,因此您真正需要做的就是while True用遞歸調(diào)用替換:


  def something() do

    x = function()

    y = function()


    if x != y do

      x

    else

      something()

    end

  end


查看完整回答
反對(duì) 回復(fù) 2023-07-11
?
桃花長相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

遞歸是你的朋友


  def something do

    x = function()

    y = function()

    if x != y, do: x, else: something()

  end


查看完整回答
反對(duì) 回復(fù) 2023-07-11
?
BIG陽

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

為了多樣性,這里不是基于Stream.iterate/2和 的遞歸答案Stream.take_while/2。請(qǐng)注意,可以使用任何無限流生成器來代替iterate/2,例如Stream.cycle/1

0

|> Stream.iterate(&(&1 + 1))

|> Stream.map(fn _ -> {f1(), f2()} end)

|> Stream.take_while(fn {x, y} -> x != y end)

|> Enum.to_list()

在許多情況下,這種解決方案更為可靠。


查看完整回答
反對(duì) 回復(fù) 2023-07-11
?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

我認(rèn)為你的解決方案還不錯(cuò),只是習(xí)慣于看到多個(gè)函數(shù)子句在起作用。您可以稍微重新排列它以使其更具可讀性,但這只是個(gè)人喜好。

def something(), do: something(nil, nil)
defp something(x, x), do: something(function(), function())
defp something(x, _y), do: x

(x, x)當(dāng)參數(shù)相等時(shí),該子句將被執(zhí)行。

(x, _y)子句僅返回x,否則將執(zhí)行。

但我不得不承認(rèn),波蒂巴斯的答案非常簡單,而且可能是一個(gè)很好的妥協(xié)。我認(rèn)為我一般更喜歡函數(shù)子句方式,因?yàn)樗箙?shù)明確并隱藏更少的副作用。


查看完整回答
反對(duì) 回復(fù) 2023-07-11
  • 4 回答
  • 0 關(guān)注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)