【问题标题】:How to print as a side-effect in Elixir?如何在 Elixir 中作为副作用打印?
【发布时间】:2022-02-04 18:23:15
【问题描述】:

我正在 Elixir 中重新创建流行的文字游戏“Wordle”。如果用户不输入 5 个字母的单词,我想给他们反馈。到目前为止,我得到了这个:

  def play do
    guess = IO.gets("Guess a 5 letter word: ")
    guess = String.trim(guess)
    guess = String.downcase(guess)
    attempt(guess)
  end

  def attempt(@correct_word) do
    "You won!"
  end

  def attempt(guess) when byte_size(guess) != 5 do
    "Guess must be 5 letters"
    play()
  end

  def attempt(guess) when byte_size(guess) == 5 do
    determine_guess_result(guess)
    "You have x guesses left"
  end

问题是这条线永远不会显示:"Guess must be 5 letters",因为我在之后立即调用play(),所以它永远不会从函数返回

这是如何在 Elixir 中实现的,我可以显示这一行,然后再次调用 play() 给用户下一个回合?

【问题讨论】:

    标签: elixir


    【解决方案1】:

    使用IO.puts/2,默认情况下会附加一个换行符。

    IO.puts("Guess must be 5 letters")
    play()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      相关资源
      最近更新 更多